• Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

AltME groups: search

Help · search scripts · search articles · search mailing list

results summary

worldhits
r4wp5907
r3wp58701
total:64608

results window for this page: [start: 42801 end: 42900]

world-name: r3wp

Group: !REBOL3-OLD1 ... [web-public]
[unknown: 5]:
21-Jan-2009
How do I submit a request for Carl to include a feature in R3?
Henrik:
21-Jan-2009
except, rebdev seems to be down. he said that some changes were going 
to be made... will see if it comes back up in a few hours.
[unknown: 5]:
21-Jan-2009
Henrik my request is a change for ports.
[unknown: 5]:
21-Jan-2009
So a block of blocks would be returned.
[unknown: 5]:
21-Jan-2009
Oh, didn't know that.  Got a link?
BrianH:
21-Jan-2009
Other port schemes will differ. Steeve is working on a block port 
that looks really cool.
[unknown: 5]:
21-Jan-2009
Oh I know it would be possible to do but at a cost in performance 
I would suppose.
BrianH:
21-Jan-2009
Performance of ports is greater overall, so that is a tradeoff I 
am willing to make :)
Pekr:
21-Jan-2009
Paul, please read those ones:

http://www.rebol.net/wiki/Port_Implementation
http://www.rebol.net/wiki/Ports
http://www.rebol.net/wiki/Port_Examples(a good one ....)
http://www.rebol.net/r3blogs/0127.html"Pruning down
[unknown: 5]:
21-Jan-2009
Well that is why I do currently in the newer Tretbase.  I actually 
read blocks from a file and they contain REBOL values.
BrianH:
21-Jan-2009
We can afford to wait for now: It will be a while before there are 
enough messages for that kind of optimization to be needed.
Henrik:
21-Jan-2009
Steeve, can you explain in a few lines what it does? It simply stores 
a block as a file and lets you seek/edit it?
Steeve:
21-Jan-2009
Right Brian,  but more the client grows more it will  need time to 
rewrite it.

The hard work doesn't come from the replacement of blocks with  virtual 
blocks (it's minor).

The problem comes from useless needs to reload and sort blocks in 
memory after each connection.

Outside the big respect i have for Carl, it's a poor conception, 
sorry.
[unknown: 5]:
21-Jan-2009
So virtual blocks is a storage of blocks in a blocks that is then 
loaded into memory?
Steeve:
21-Jan-2009
Henrik, yes a virtual block act like a block, you can use most natives 
which handle blocks as is.

The gain is that there is no block bloating the memory, all actions 
are converted to file actions.

So you can work with blocks containg millions of data with no pain 
and overhead.
[unknown: 5]:
21-Jan-2009
Your storing data in blocks into a file that is one large container 
block?
[unknown: 5]:
21-Jan-2009
So is a virtual block in essence a file?
[unknown: 5]:
21-Jan-2009
This is a bit like Tretbase.
Henrik:
21-Jan-2009
so the data is a plain binary?
[unknown: 5]:
21-Jan-2009
Tretbase uses data and a index.
Steeve:
21-Jan-2009
yes Paul like your tretbase conception, the only difference is that 
it's a scheme and there is no new functions to deal with.
The programmer can continue to think is working with a block.
[unknown: 5]:
21-Jan-2009
Mine is a bit different.
Steeve:
21-Jan-2009
Paul, i can't test the perfs currently, because there is some remaining 
bugs in the file scheme, so that i have to open close the ports each 
time a value is append in the block.
[unknown: 5]:
21-Jan-2009
In Tretbase, I decide to incorporate a second method that uses just 
the data file and reads blocks from it.
[unknown: 5]:
21-Jan-2009
It required that I had to create a block parser.
[unknown: 5]:
21-Jan-2009
So can specify how many blocks of data you want to read at a time? 
 Like say I want to read 10 blocks and stop and then read 10 more 
where that one left off?
[unknown: 5]:
21-Jan-2009
Sorry I got distracted - I had to use some mighty puddy on a chair.
[unknown: 5]:
21-Jan-2009
I have a function called get-block which I use to handle block reading 
currently.
Henrik:
21-Jan-2009
It seems rebdev mobile is down right now, so I made a screenshot 
of Steeve's example post:

http://rebol.hmkdesign.dk/files/r3/gui/182.png
[unknown: 5]:
21-Jan-2009
>> a: "this is a test [now a block] garbage [another block with a 
block in it []][and another] garbage..

 == {this is a test [now a block] garbage [another block with a block 
 in it []][and another] garbage..}
>> get-block a
== [now a block]
>> 
 get-block a
== [another block with a block in it []]
>> get-block 
 a
== [and another]
[unknown: 5]:
21-Jan-2009
Correct, how about default parameter values when no arguments are 
passed and a function is invoked?  That would be a nice feature to 
have.
[unknown: 5]:
21-Jan-2009
We can do this now in a more complicated manner.
BrianH:
21-Jan-2009
No, that's feasible in theory, but only for arguments that are optional 
in the REBOL style, using refinements (or any-type! for the last 
arguments) - REBOL's evaluation model depends on knowing the number 
of arguments. In practice the current method may be more efficient 
- we can see. That could be handled by a function construction function, 
i.e. FUNC, HAS or DOES.
[unknown: 5]:
21-Jan-2009
I can already do something like this:


fnc: func [a [unset! string!]][either value? 'a [a][a: "I got value"]]
[unknown: 5]:
21-Jan-2009
but it would nice to be able to do something like this:

fnc: func[a [string!] /default $10 ][print a]

fnc 
>> $10
[unknown: 5]:
21-Jan-2009
where anything after /default is a default value for the respective 
parameter.
[unknown: 5]:
21-Jan-2009
I didn't know how deep changes were being made with respect to R3. 
 Maybe a wish for R4.
BrianH:
21-Jan-2009
It has nothing to do with the implementation language though - it's 
a syntax thing.
BrianH:
21-Jan-2009
Languages that wrap function arguments in parentheses (like C and 
Pascal) or are line-oriented (like Basic and Python) or at least 
have statement separators (like ; ) have a way of telling where their 
argument lists end. REBOL can only do so if the arity of a function 
is determinable at the call site. This is the price we pay for getting 
rid of the parentheses.
BrianH:
21-Jan-2009
That is not a matter of internals, it really is a consequence of 
REBOL's evaluation rules. You can't change it without changing the 
language in drastically incompatible and slower ways.
Steeve:
21-Jan-2009
Ok, i made a demo using the virtual block scheme (tested only with 
the last alpha)
Sorry for my frenglish
http://www.MegaShare.com/573256
Oldes:
21-Jan-2009
Why you use such a site instead of using for example rebol.org?
Steeve:
21-Jan-2009
Oldes, it's a first try, then i will post it in rebol.org
Henrik:
21-Jan-2009
Paul, try reloading the page a few times. It worked here.
[unknown: 5]:
21-Jan-2009
I'll check it out in a few months.  ;-)
BrianH:
21-Jan-2009
Watch out: R3 currently doesn't support documentation or anything 
other than whitespace (if that) before the REBOL header. Yes, it's 
a bug. You will need to remove the docmentation from the beginning 
of the script for this to run.
Steeve:
21-Jan-2009
Brian write them please i'm a bit lazy with that bugs.
BrianH:
21-Jan-2009
That was a comment on 2 messages past.
Will:
21-Jan-2009
ot, Brian: could you have Carl build a 2.7.7 alpha/beta with all 
the work you have done? shouldn't take much time for him 8)
BrianH:
21-Jan-2009
Will, I haven't done a lot of work for R2 lately - only Anton has, 
afaik, and we haven't even gone over his submissions yet. After the 
R3 public release happens and the next DevBase is running we can 
work on a R2 release. More backports I hope :)
BrianH:
21-Jan-2009
Nope, still doesn't work.
>> write %blah to-binary "hello^/rebol [] print 1"
>> do %blah
** syntax error: Script is missing a REBOL header: hello

** Note: use WHY? for more about this error
BrianH:
21-Jan-2009
Weird. Do you use a different LOAD than the one in R3 by default, 
or a different SCRIPT?
BrianH:
21-Jan-2009
Question for the community:

It has been a long time since REBOL 2 was first released. Is it finally 
OK to remove the ELSE native from R3?
Steeve:
21-Jan-2009
yes !!!! got it !!!
REBOL [] must be in uppercase it not, it failes.
Give me a medal Brian
Steeve:
21-Jan-2009
it's not a bug Brian, onl
BrianH:
21-Jan-2009
We have a lot of hot programmers in the community... :)
btiffin:
21-Jan-2009
f: func [n] [if n = 1 [print 1] else [print 0]]
f 2
Re else;
** Script Error: else has no value
vs
** Script Error: else is obsolete. Use the EITHER function


Second one far better for new to REBOL people imho.  The'll only 
do the second case twice in a career, the first may have them scratching 
head for 10 minutes and giving this new REBOL thing the boot.
PeterWood:
22-Jan-2009
It would be grest if you could get the tested requests marked as 
completed as the stats give such a bad false impression.
Dockimbel:
22-Jan-2009
Btw, ticket should be closed by the emitter once the fix is released. 
If the user don't do that after a given period (let say 1 or 2 weeks, 
one of CC's admin or developers can do that instead).
Henrik:
22-Jan-2009
Janko, because the supported functions like COPY works on ports, 
and virtual blocks is a port scheme, customizing how COPY works with 
that specific scheme.
Janko:
22-Jan-2009
(in a good way)
Henrik:
22-Jan-2009
so it's not a new datatype, but a new scheme for port!.
Janko:
22-Jan-2009
I saw some tutorial about creating new "protoco handler" .. or is 
that a third thing?
Henrik:
22-Jan-2009
if you read about ports in the wiki, they'll give a fair explanation 
of how they work.
Henrik:
22-Jan-2009
Janko, yes, exactly. If you open a port, you get a port object with 
information about what the scheme does. When that port is passed 
to COPY, appropriate actions are taken to carry out the COPY function 
that resides inside the scheme.
[unknown: 5]:
22-Jan-2009
Is there a list of all those contributing to R3?
Janko:
22-Jan-2009
Paul: when you were asking about default arguments to funcs before, 
I think it's a "conceptual" limitation because of stuff like this 
example (for example that oneortwo can take 1 or 2 arguments : >> 
oneortwo 2 add 3 2  .............  and most things like if either 
are expressions which means they return a value (which you sometimes 
need and sometimes not )  you can "assume" that you will always require 
result of add because it has no side effect, but for example : >> 
oneortwo 2 if [ insert copy [ ] 1 ] ..... there is no theoretical 
way to determine if result of if SHOULD be taken by oneortwo or not
Janko:
22-Jan-2009
thats probably why refinements were invented , that also add a lot 
of new
Janko:
22-Jan-2009
(but I am a ocaml newbie too)
Steeve:
22-Jan-2009
[Virtual blocks] What do you think of an option to allow fixed-size 
records only, so that there is no need to create a file index (faster 
access but data file possibly bigger)
Janko:
22-Jan-2009
yes that would be a cool option too
Janko:
22-Jan-2009
well at least there is a chance :) .. well I don't know when I will 
be able to try R3 at all, and even less when I will be able to use 
in for real projects... that's why I am asking, but I don't "urgently" 
need it right now so no worries for me
Janko:
22-Jan-2009
will R3 have something similar than coroutines or a way to simulate 
cooperative or preemptive (green-not on os level threads) concurrency?
Henrik:
22-Jan-2009
Tasks are very interesting, as it will render slow and large cooperative 
threading libraries for R2 moot. You create a task like you create 
a function and it can be used in the same way, except you are returned 
to the console right after calling it. Also networking is completely 
async on the lower level, which helps speed up network operations. 
You can achieve similar things in R2 through hacks, but it's not 
well documented or stable.
Henrik:
22-Jan-2009
Janko, I can't be completely sure that they will stay that way. This 
has something to do with the Wildman project, which is about getting 
R3 to run standalone on embedded hardware with a minimal OS underneath. 
So whether R3 will then employ its own threading model or always 
use OS threading, I don't know... and Wildman is not something that 
will happen soon.
Janko:
22-Jan-2009
well it's very nice to know that something is being developed in 
this too.. cooperative threading and async io is a lot already.. 
if there will be native threads it's just a very big additional bonus, 
(even factor, which is very progressive lang. in terms of core features 
and libs will have os level threads only in version 2.0 for example)
Steeve:
22-Jan-2009
[virtual blocks] it would be more convenient to create a new scheme 
for fixed-size records. I don't want double the size of the current 
 scheme just for a new option.
(Most of important actors have to be rewritten)
Steeve:
22-Jan-2009
give me a convenient place and i post it
Steeve:
22-Jan-2009
Brian, could you create a sub header in R3/protocols for the virtual 
block scheme ?
Steeve:
22-Jan-2009
[VBS] Did you realize that 1 000 000 values can be fetched in a loop 
without bloating the memory in only 1 SEC
Steeve:
22-Jan-2009
[VBS] SORRY, i made a wrong read, it took 1 sec to fetch 10 000 values 
not 1 000 000 but it's quite good too, no ?       -_-'
[unknown: 5]:
22-Jan-2009
Here is a fetch of 10,000 records:

>> s: now/precise db/get test d t: now/precise
== 22-Jan-2009/12:13:34.534-6:00
>> difference t s
== 0:00:00.973


Pretty much about  1 second - similiar to what your seeing.  I don't 
think we can get much more performance out of REBOL than that.
Janko:
22-Jan-2009
this is maybe a good idea to develop something in gihert level language 
to figure out all bits and pieces and algoritms, and then when you 
have a good picture port it into c
Steeve:
22-Jan-2009
Hum currently, it's a problem for me, he said that his RIF conception 
have better perfs than VBS.

He said too that i  have not done the best choices (missing cache 
for example).

He said too than doing such a scheme is complex (beyond my understanding 
???)

I don"t want to work on a thing which will be uselless when R3 will 
be released.
He said better perfs with RIF, so RIF works currently...
I wonder why rebdev is not using it...
I'm a little bit disapointed...
[unknown: 5]:
22-Jan-2009
I think we just don't know all the capabilities that we can harness 
with REBOL.  Regarding caching, I know that you have to tune how 
much you send to a read/write request for optimal port usage.  Carl 
is going to know the underlying details better than we would.
Janko:
22-Jan-2009
hm.. I would be a little disapointed to :(  ... but when will RIF 
be available then.. isn't time in general problem with RT
Henrik:
22-Jan-2009
RIF is not going to come right now. That is probably a feature for 
3.1.
Steeve:
22-Jan-2009
so i can make an estimation of the memory used for 100 000 messages, 
wait a minute...
Steeve:
22-Jan-2009
I take 16 bytes for storing a value in memory (like for R2) i don't 
 know if it's more in R3.

An unique message has a structure (a block!) of a minimum size of 
80 bytes, so i take 110 bytes (for a small message of  30 characters 
in average).

for a block containing 100 000 messages we have 100 000 * (16 + 110) 
= 12 Mb

So for the 2 blocks , we have 24 Mb, just to deal with 100 000 messages.

It's growing fast, because rebdev store many events too (remove, 
private message, move, etc...).
and it will be connected to devbase too.

I think that  thousands of messages  and events will be added per 
month when the community will have access to rebdev.

So his current implementation will resist 2 or 3 months before reaching 
tens of Megabyte in memory usage.

And when it will go over 100 000 messages (in 4 or 6 month) the perfs 
will blow !!!!!
Steeve:
22-Jan-2009
i made a wrong statement
Steeve:
22-Jan-2009
the second block uses references not a copy of the message, so that 
the second block has a size of 100 000 * 16 = 1,5 Mb
Steeve:
22-Jan-2009
i can do a prediction, it will end like with Altme, using 50 Mb of 
memory after one year of usage
BrianH:
22-Jan-2009
A couple things to realize:

- The chat client can change easily, independent of R3, and does 
change daily.

- Our priority is on making the public release happen ASAP. Chat 
reaching its limits is months down the road at worst. We have time.
BrianH:
22-Jan-2009
Many eyes make bugs shallow. We need more developers, which means 
we need a public release. Priorities. We can fix chat *after* the 
public release. As it is, getting the file store in place is a more 
pressing need. That way we can release and track the source. Once 
the source is released we can make fixes as needed. The priority 
needs to be on testing R3 itself, not the chat client. We aren't 
even going to start the GUI chat client until after the R3 public 
release.
PeterWood:
22-Jan-2009
It's good to see a little realism about the scope of R3 when Carl 
posted this in RebDev:

Regarding RIF, it will be in 3.1 (not 3.0) and it will provide a 
lot of the 

virtualness" needed for what I think your goal is (to have very large 
blocks for large datasets)."
Dockimbel:
22-Jan-2009
From what I understood, RIF would have several advantages compared 
to a mezz-level approach :

- fast indexed storage engine in C (probably btree indexes as sqlite 
storage layer was considered for RIF)

- no LOAD/MOLD overhead (direct reading/writing of values in memory)
BrianH:
22-Jan-2009
Or it could be a UDT.
Graham:
22-Jan-2009
Just be thankful R3 is not a 100 year language like Paul Graham's 
ARC.
Gabriele:
23-Jan-2009
Steeve, as long as you're using a decent OS, any database should 
be kept all in memory regardless of size. Otherwise, you need a DBMS 
and a DBA.
Maarten:
23-Jan-2009
Yes, some DBAs can do amazing things wih disks (disk tuning is a 
good selection criterion for a DBA)
42801 / 6460812345...427428[429] 430431...643644645646647