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

World: r3wp

[RAMBO] The REBOL bug and enhancement database

Anton
8-Feb-2006
[1556]
I would say SAVE should mirror WRITE MOLD, and LOAD should be orthogonal 
to that.

(Or at least, that's what you kind of expect.) (and same for SAVE/ALL, 
MOLD/ALL, LOAD/ALL.)
Henrik
8-Feb-2006
[1557]
hmm...
Ashley
8-Feb-2006
[1558]
load/all is very useful if you are loading a block of values from 
a file, eg.

	1 2 3 "Bob"


and you don't want to code for the case where the file only has one 
value in it. For example, with a file containing a single value in 
it I get:

>> load %a.txt
== 1
>> load/all %a.txt
== [1]


but in all other cases (zero or more than one value), I always get 
a block. I asked about this ages ago and the answer at the time was 
that beginners expected to be able to "load" a value without worrying 
about unwanted block creation (and those who wanted it would use 
load/all).
Anton
8-Feb-2006
[1559]
Yes, it all seemed to make sense at the time SAVE/ALL and LOAD/ALL 
were implemented. I remember the discussions about it. But trying 
to get a consistent method for saving/loading my data the other night 
proved very confusing. I spent a couple of hours testing different 
cases and I still haven't finished thinking about the issue.
Henrik
8-Feb-2006
[1560]
I would probably have said that if you are to return something, use 
as few different types as possible, even at the cost of an additional 
function. then a block would be returned regardless of contents
Anton
8-Feb-2006
[1561]
Yes, that's what I had in mind. One way of saving and loading, where 
I can always expect the data in a particular format.
Ashley
8-Feb-2006
[1562]
In RebDB I ended up with the following to handle this:

	switch/default length? tables/:table/data [
		0	[write tables/:table/dat-file ""]
		1	[save/all tables/:table/dat-file first tables/:table/data]
	][
		save/all tables/:table/dat-file tables/:table/data
	]
Anton
8-Feb-2006
[1563x3]
I think, as per Gabriele's suggestion, that can be simplified to:
	write  tables/:table/dat-file  mold/all tables/:table/data
(though it's not exactly the same for the 0 case.)
(The only reason I would want to use SAVE or SAVE/ALL is to avoid 
the slightly longer expression: WRITE MOLD or WRITE MOLD/ALL)
If I have to make a custom function to get consistent behaviour then 
I might as well just use WRITE. :-)
Gabriele
8-Feb-2006
[1566x2]
note: save/all and load/all are unrelated, and they were added at 
different times.
also, if you are using load/all, you will need mold/only/all on the 
example above. the /all in mold is unrelated to the /all in load 
and means that all values are serialized.
Carl
8-Feb-2006
[1568]
Yes, I agree that the difference in behavior makes it more painful.
Graham
8-Feb-2006
[1569]
From the Orca channel .. it would be good to set up a way of "voting" 
or other way of determining of what are the priorities for *developers* 
that RT should focus on.
[unknown: 9]
8-Feb-2006
[1570]
Agreed.
Anton
9-Feb-2006
[1571x2]
Ah that's very interesting !  I had the strong impression load/all 
and save/all were supposed to be orthogonal, even though I had read 
the function help for each one.
Maybe it is my failing ? Am I so stubborn to continue to try to make 
something work the way I imagined it, instead of considering that 
  maybe it just won't work that way, and to look around for the (what 
should have been) obvious alternatives ?
Ammon
13-Feb-2006
[1573x2]
REBOL/Command 2.5.125.3.1
Copyright 1997-2005 REBOL Technologies

>> write clipboard:// "test"
** Access Error: Invalid port spec: clipboard://
** Near: write clipboard:// "test"
>> read clipboard://
** Access Error: Invalid port spec: clipboard://
** Near: read clipboard://
(That's running on Windows XP Media Center...)
BrianH
14-Feb-2006
[1575]
clipboard:// just works with View. Did you try /Command/View ?
François
20-Feb-2006
[1576]
Hi, i just posted a new bug on rambo: When calling 'request-file 
and clicking on Cancel, the value returned is %none instead of none 
--> makes more complicated to test the returned value. I tested under 
Windows XP
Graham
20-Feb-2006
[1577]
>> type? request-file
== none!
François
20-Feb-2006
[1578x4]
Well, you are right, from the console, it is ok, but try from a script... 
I have %none and file! as as result
My mistake!!! Sorry!
It works, indeed...
Just send a feedback to RT to ask them to disregard the rambo ticket
Gabriele
20-Feb-2006
[1582]
deleted
Volker
7-Mar-2006
[1583x5]
Interesting memory-bug
filet!: context [filet: none]
spec: [filet: 1]
fil: make filet! spec
recycle probe stats
repeat i 10000[
 fil: make make filet! spec fil
]
recycle probe stats
repeat i 10000[
 fil: make make filet! spec third fil
]
recycle probe stats
make object! object! does not release.
make object third object! does.
(thats like make object! block!
linux 1.3.2
Is this repeatable, and clear enough for rambo?
JaimeVargas
7-Mar-2006
[1588]
Do you want me to test in OSX?
Volker
7-Mar-2006
[1589]
Good idea.
JaimeVargas
7-Mar-2006
[1590]
I don't understand the error. Do you want the output I am getting?
Volker
7-Mar-2006
[1591x4]
Yes.
Its three memory-stats (after recycle).
all should be same, or similar low.
the second is a lot higher, because the objects from the first loop 
are not relased.
JaimeVargas
7-Mar-2006
[1595x2]
Well after the make I get errors.
The data is:
run1: 1716394
run2: 3396726
run3: 1717126
Volker
7-Mar-2006
[1597x2]
Thanks. That confirms the bug.
Niow i need a good description..
JaimeVargas
7-Mar-2006
[1599x2]
I think the description is precise enough. make object! object! Not 
releaseing is bad. (Dangling pointers)
Good catch.
Gabriele
8-Mar-2006
[1601]
hmm, but memory is released at the next non object-object make, no?
Volker
8-Mar-2006
[1602]
Seems so. But i had a memory-leak by this. Seems making objects is 
not that common when the gui is set up. Then extend incomming objects 
with a default one, in that case it drove me mad.
Ashley
13-Mar-2006
[1603]
Anyone had problems with 'switch and datatype! I've reduced the problem 
down to:

t: func [v] [
	select [
		#[datatype! integer!]	["A"]
		#[datatype! decimal!]	["B"]
		#[datatype! block!]	["C"]
	] type? v
]

>> t 1
== ["A"]
>> t 1.0
== ["B"]
>> t []
== decimal!

Unless there's an obvious explanation, I'll RAMBO it.
Gabriele
14-Mar-2006
[1604x2]
the explanation is this:
>> find [1 a []] block!
== [[]]
>> find [1 a []] word!
== [a []]
>> find [1 a []] integer!
== [1 a []]