r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[!REBOL3-OLD1]

BrianH
27-Apr-2009
[13555x2]
String, number and block data will be more; binary data will be the 
same; port and graphics objects will be much less. When we get vector! 
working that will drop memory usage in many data processing scenarios. 
Many of the changes to the mezzanines and natives (including changes 
in alpha 49) lower the number of block copies, so that cuts down 
memory overhead.
Adjusting the GC: I don't know.
Henrik
27-Apr-2009
[13557]
I've asked on chat.
Steeve
27-Apr-2009
[13558]
R3 uses larger slots for values, a side effect of the 64bit integers 
and such.
Can you be more precise Brian ?
How long are the new slots ?
Pekr
27-Apr-2009
[13559]
Long enough but not longer? :-)
Steeve
27-Apr-2009
[13560]
uhm... something like that
BrianH
27-Apr-2009
[13561]
Don't know off the top of my head. Not double in size, as the slot 
overhead hasn't doubled, just the data part.
Steeve
27-Apr-2009
[13562]
Is Carl hiding from you such important infos ? :)
BrianH
27-Apr-2009
[13563]
I don't ask - haven't needed to know.
Steeve
27-Apr-2009
[13564]
You're not Brian, the Brian i know would have killed some kitten 
to know that
BrianH
27-Apr-2009
[13565x2]
I think of memory in terms of number of elements (which i can affect) 
rather than element size (which I can't). I don't think of RAM size 
except for at a overall process level.
He mentioned the real sizes at some point (in a blog I think), but 
I don't remember the exact numbers.
Steeve
27-Apr-2009
[13567]
don't remember that
BrianH
27-Apr-2009
[13568x2]
For my code I find that I only need to think in terms of number of 
copies, or preallocation. On an algorithmic level you can save orders 
of magnitude in memory overhead (space and time) by controlling the 
number of copies.
The FOREACH changes in alpha 49 were done to reduce memory overhead, 
for instance.
Steeve
27-Apr-2009
[13570]
Don't force me to disassemble the binary to know that, otherwise 
i'm afraid that Dockimbel will kill me.
BrianH
27-Apr-2009
[13571]
Same with exposing COLLECT-WORDS so it can be used instead of BIND/set 
into a temporary object.
Steeve
27-Apr-2009
[13572x3]
Oh the FOREACH overhead has been reduced ?
nice news
not anymore  bind/copy with FOREACH ?
BrianH
27-Apr-2009
[13575x2]
The BIND/copy overhead is still there, but being able to use FOREACH 
on map!, object!, module!, port! and error! means that you don't 
have to generate a block! copy of those types in order to work on 
them. Plus you don't need the EITHER or CASE to screen for those 
cases.
In general the size of the code block passed to FOREACH is much smaller 
than the size of the data passed to it.
Steeve
27-Apr-2009
[13577]
foreach works now on ports ? are you sure of that ?
BrianH
27-Apr-2009
[13578x2]
In theory, but I think it works on the port fields as if it were 
an object, not on the returned data.
I haven't checked though.
Steeve
27-Apr-2009
[13580x2]
Uhm, was not my request, it would be more usefull to be able to use 
FOREACH as an ACTOR in a scheme.
So on data, rather than to populate properties of an object port
BrianH
27-Apr-2009
[13582]
Yeah, I didn't request that either. Did you file a CureCode ticket 
for FOREACH on ports? I recall some overly general ticket you filed 
that was requested to be broken up iinto individual tickets, but 
not the individual tickets.
Steeve
27-Apr-2009
[13583]
have to
BrianH
27-Apr-2009
[13584x3]
Ticket 556.
You might be a little late here - port! has been added to the any-object! 
typeset (I can't say for sure). You gotta file tickets if you want 
to get things done.
At least on a native level. On a mezzanine level you can do it yourself, 
as long as it's a good idea :)
Steeve
27-Apr-2009
[13587x2]
uhm, the any-object! type is troublemaker
Port should not be in it, to allow functions to behave as scheme 
actors
BrianH
27-Apr-2009
[13589]
It's not a type, it's a collection of types (typeset!). In this case 
a collection of the types that act like objects.
Steeve
27-Apr-2009
[13590]
i'm aware of that, don't do a disgression
BrianH
27-Apr-2009
[13591]
It's just there so you can use it in function specs for functions 
that act on objects to let them act on other object-like things, 
when they are being sed in object-like ways.
Steeve
27-Apr-2009
[13592]
I'm not sure, but i just think there is a difference in the way of 
treating the argument any-object! and object!
In the first case the port is populated like an object.
In the second, the function is usable as an actor for schemes.
It's really different use cases, I hope i'm wrong here.
BrianH
27-Apr-2009
[13593]
If you want FOREACH to work on ports in a certain way, you need to 
write a ticket for that. Mentioning it here won't accomplish anything, 
as Carl almost never sees the stuff we write here.
Steeve
27-Apr-2009
[13594x2]
see the arguments of COPY by example
copy don't use any-object! because of that
BrianH
27-Apr-2009
[13596x2]
COPY hasn't been changed to use any-object! - that may yet happen, 
but any-object! is too new for it to have propagated yet.
I doubt it, as COPY doesn't act on error! and task! in an object-like 
way.
Steeve
27-Apr-2009
[13598]
if i understand correctly how Carl managed generic behavior for the 
any-object! argument, COPY will never be changed like you think
BrianH
27-Apr-2009
[13599]
I doubt it
Steeve
27-Apr-2009
[13600]
Because it would remove the use case of COPY as an actor.
BrianH
27-Apr-2009
[13601]
Um, no it wouldn't. It would just allow error!, task! and module! 
to be copied too (which would be a bad idea).
Steeve
27-Apr-2009
[13602]
we will see, i just hope you're right here
BrianH
27-Apr-2009
[13603]
Typesets are just shortcuts for adding all of the types they contain 
to the function spec. They have no inherent meaning.
Steeve
27-Apr-2009
[13604]
ok