Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

CORE 2.5.2 Bugs/Enhancements

 [1/8] from: fsievert::uos::de at: 7-May-2002 8:42


Hi! I tested core 2.5.2 right now and like most of the changes you did, thank you! Here is a list of things i still found: --- New Evaluation --- Evalutation is still not very constistent. Maybe you could have a look at http://www.fx5.de/REBOL/hot-values.r (The comments refer to Core 2.5.0, so ignore them) For example:
>> a: first ['a]
== 'a
>> a
== a I would expect == 'a , do you agree? --- Crashing: Foreach/Reduce/Do/next --- And there are still some crashes in REBOL which causes crashes, when REBOL runs bigger scripts for longer time. You can try do http://proton.cl-ki.uni-osnabrueck.de/REBOL/bug-test.r to find them. test2 ... test4 will crash REBOL. --- Bind/In --- Maybe you could allow bind to accept not only word - Values, but lit-word, set-word, too. This already works, but the definition of Bind does not allow it. --> use [a] [a: third :bind repend a/words [any-word!]] In should allow any-word!, too. --> use [a] [a: third :in repend a/word [any-word!]] Enhancement-Request: In should allow to get a word bound not only to objects, but to functions, too. Example: a: func [b] [b: 99] get in :a 'b --- Use/Repeat --- Maybe you will want use to copy/deep it's block argument before binding it (needed for recursive functions) --- FTP Protocol --- FTP-Protocol is broken, it opens a new connection for each access when using ip-addresses. Fix: use [a] [ a: second get in system/schemes/ftp/handler 'open a: next a/connections/all change/only a to-paren compose [form (first a)] ] --- throw-on-error --- Throw on error is not able to handle unset-Return-Value. Fix: throw-on-error: func [ [throw] blk [block!] ][ if error? set/any 'blk try blk [throw :blk] get/any 'blk ]

 [2/8] from: lmecir:mbox:vol:cz at: 7-May-2002 11:26


Hi Frank, I second to this. It looks that you forgot to append first [a:] to the examples. ----- Original Message ----- From: "Frank Sievertsen" <[fsievert--uos--de]> To: <[feedback--rebol--com]> Cc: <[rebol-list--rebol--com]> Sent: Tuesday, May 07, 2002 8:42 AM Subject: [REBOL] CORE 2.5.2 Bugs/Enhancements Hi! I tested core 2.5.2 right now and like most of the changes you did, thank you! Here is a list of things i still found: --- New Evaluation --- Evalutation is still not very constistent. Maybe you could have a look at http://www.fx5.de/REBOL/hot-values.r (The comments refer to Core 2.5.0, so ignore them) For example:
>> a: first ['a]
== 'a
>> a
== a I would expect == 'a , do you agree? --- Crashing: Foreach/Reduce/Do/next --- And there are still some crashes in REBOL which causes crashes, when REBOL runs bigger scripts for longer time. You can try do http://proton.cl-ki.uni-osnabrueck.de/REBOL/bug-test.r to find them. test2 ... test4 will crash REBOL. --- Bind/In --- Maybe you could allow bind to accept not only word - Values, but lit-word, set-word, too. This already works, but the definition of Bind does not allow it. --> use [a] [a: third :bind repend a/words [any-word!]] In should allow any-word!, too. --> use [a] [a: third :in repend a/word [any-word!]] Enhancement-Request: In should allow to get a word bound not only to objects, but to functions, too. Example: a: func [b] [b: 99] get in :a 'b --- Use/Repeat --- Maybe you will want use to copy/deep it's block argument before binding it (needed for recursive functions) --- FTP Protocol --- FTP-Protocol is broken, it opens a new connection for each access when using ip-addresses. Fix: use [a] [ a: second get in system/schemes/ftp/handler 'open a: next a/connections/all change/only a to-paren compose [form (first a)] ] --- throw-on-error --- Throw on error is not able to handle unset-Return-Value. Fix: throw-on-error: func [ [throw] blk [block!] ][ if error? set/any 'blk try blk [throw :blk] get/any 'blk ]

 [3/8] from: lmecir:mbox:vol:cz at: 7-May-2002 11:35


BTW, your error! result looks arguable to me. ----- Original Message ----- From: "Frank Sievertsen" <[fsievert--uos--de]> To: <[feedback--rebol--com]> Cc: <[rebol-list--rebol--com]> Sent: Tuesday, May 07, 2002 8:42 AM Subject: [REBOL] CORE 2.5.2 Bugs/Enhancements Hi! I tested core 2.5.2 right now and like most of the changes you did, thank you! Here is a list of things i still found: --- New Evaluation --- Evalutation is still not very constistent. Maybe you could have a look at http://www.fx5.de/REBOL/hot-values.r (The comments refer to Core 2.5.0, so ignore them) For example:
>> a: first ['a]
== 'a
>> a
== a I would expect == 'a , do you agree? --- Crashing: Foreach/Reduce/Do/next --- And there are still some crashes in REBOL which causes crashes, when REBOL runs bigger scripts for longer time. You can try do http://proton.cl-ki.uni-osnabrueck.de/REBOL/bug-test.r to find them. test2 ... test4 will crash REBOL. --- Bind/In --- Maybe you could allow bind to accept not only word - Values, but lit-word, set-word, too. This already works, but the definition of Bind does not allow it. --> use [a] [a: third :bind repend a/words [any-word!]] In should allow any-word!, too. --> use [a] [a: third :in repend a/word [any-word!]] Enhancement-Request: In should allow to get a word bound not only to objects, but to functions, too. Example: a: func [b] [b: 99] get in :a 'b --- Use/Repeat --- Maybe you will want use to copy/deep it's block argument before binding it (needed for recursive functions) --- FTP Protocol --- FTP-Protocol is broken, it opens a new connection for each access when using ip-addresses. Fix: use [a] [ a: second get in system/schemes/ftp/handler 'open a: next a/connections/all change/only a to-paren compose [form (first a)] ] --- throw-on-error --- Throw on error is not able to handle unset-Return-Value. Fix: throw-on-error: func [ [throw] blk [block!] ][ if error? set/any 'blk try blk [throw :blk] get/any 'blk ]

 [4/8] from: fsievert:uos at: 7-May-2002 14:40


On Tue, 7 May 2002, Ladislav Mecir wrote:
> BTW, your error! result looks arguable to me.
The error! result is ehhh... an error :)

 [5/8] from: rotenca:telvia:it at: 7-May-2002 15:04


Hi,
> --> use [a] [a: third :bind repend a/words [any-word!]]
Interesting, it works also in current version, but more interesting: use [a] [a: third :bind repend a/words [any-word!] change a/known-word reduce [any-word!] ] b: 2 o: context [a: 1 b: 1 ] probe get bind 'b first bind [:a] in o 'a probe get bind 'b first bind [a:] in o 'a probe get bind 'b first bind ['a] in o 'a Eureka! --- Ciao Romano

 [6/8] from: lmecir:mbox:vol:cz at: 8-May-2002 15:05


It is incredible, how easily can Rebol be enhanced sometimes :-) Frank, thanks for the idea and Romano, thanks for the generalization. Romano, you should send it to feedback. -L ----- Original Message ----- From: "Romano Paolo Tenca" Hi,
> --> use [a] [a: third :bind repend a/words [any-word!]]
Interesting, it works also in current version, but more interesting: use [a] [a: third :bind repend a/words [any-word!] change a/known-word reduce [any-word!] ] b: 2 o: context [a: 1 b: 1 ] probe get bind 'b first bind [:a] in o 'a probe get bind 'b first bind [a:] in o 'a probe get bind 'b first bind ['a] in o 'a Eureka! --- Ciao Romano

 [7/8] from: rotenca:telvia:it at: 8-May-2002 21:24


Hi Ladislav,
> It is incredible, how easily can Rebol be enhanced sometimes :-) Frank, > thanks for the idea and Romano, thanks for the generalization. Romano, you > should send it to feedback.
Yes. Your tricks with function attributes and errors had to make me think: third of function is not only an ornamental addition but an active part of the native code. In the meanwhile i've written two slow but "safe" (i hope) workarounds (bugs appreciated): bindall: func [ "Binds words to a specified context." words [block! any-word!] "A block of words or single word." known-word [any-word!] "A sample word from the target context." /copy "Deep copies block before binding it." /local t res ][ t: third :bind change t/words reduce [block! any-word!] change t/known-word reduce [any-word!] res: either copy [bind/copy :words :known-word][bind :words :known-word] change t/words reduce [block! word!] change t/known-word reduce [word!] :res ] inall: func [ "Returns the word in the object's context." object [object!] word [any-word!] /local t res ][ t: third :in change t/word reduce [any-word!] res: in object :word change t/word reduce [word!] :res ] --- Ciao Romano

 [8/8] from: lmecir:mbox:vol:cz at: 12-May-2002 10:54


The APPEND function should be enhanced to allow the same types of arguments/refinements as INSERT does. append: function [ {Appends a value to the tail of a series and returns the series.} [catch] series [series! port! bitset!] "Series at point to insert" value [any-type!] "The value to insert" /part "Limits to a given length or position." range [number! series! port!] /only "Inserts a series as a series." /dup "Duplicates the insert a specified number of times." count [number!] ] [path block] [ path: to path! [insert] block: reduce [:path 'tail :series] insert/only tail block get/any 'value if part [ insert tail path 'part insert/only tail block :range ] if only [ insert tail path 'only insert tail block :range ] if dup [ insert tail path 'dup insert tail block :count ] throw-on-error block :series ] The CHANGE function should be enhanced too, to allow ANY-TYPE! VALUE argument. -L