Downloads Products Documents Community

REBOL/Core 2.6 and View 1.3 Changes

First Release: August 2005

Back to REBOL Change Logs


Overview of 2.6.2 / 1.3.2
Fixes and Enhancements
Overview of 2.6.1 / 1.3.1
Fixes and Enhancements
Overview of 2.6.0 / 1.3.0
Important Changes
New GC (Garbage Collection)
Path Evaluation
New Modal System for VID
Revised Image Datatype
All New DRAW Effect and DRAW Function
VID Face Accessors and Doc Objects
Updated Functions
Other functions that were updated in this release:
61 New Functions
Other Important Changes, Notes
RAMBO Changes
228 Bugs Eliminated
50 Wishes Granted

Overview of 2.6.2 / 1.3.2

There are about 50 fixes and enhancements in this release, some of them very deep kernel fixes, but perhaps the most important thing about it is that it is a complete release that syncs up Core, View, and the SDK.

Fixes and Enhancements

Here is a list of RAMBO entries addressed in this release.

#3179Bug: 'tog style can't be initialize to true without explicit width
#3205Bug: Library - Inline routine call crash
#3256Bug: 'wait in 'event = crash
#3259Bug: Sameness
#3261Wish: throw-on-error should handle unset result
#3314Note: Show in redraw causes stack overflow and/or crash !
#3387Bug: out-of-range crashes
#3390Bug: find/skip crash
#3400Wish: request-date would be nice to show today, and...
#3439Bug: crash molding a port with recursive reference
#3442Bug: [catch] crash
#3453Bug: permit to close an async tcp port in connect mode
#3497Bug: Segfault write read ftp-uri file
#3633Bug: open/direct crash with large file
#3649Bug: Port crash during open when no handler
#3653Bug: Crash on console WAIT when no console is open
#3674Bug: make routine! with callback! arg 7 times causes "Root block overflow" crash
#3677Note: callback limit reached
#3715Bug: Limit error output
#3824Bug: SPLIT-PATH target at an offset
#3825Bug: editor crashes at next find after delete
#3833Bug: Set-Face on Tog does not work
#3841Bug: Main system crash with the use of encap and 'alert
#3847Bug: Crash: TO IMAGE! with negative face sizes
#3855Bug: face/changes block can cause crash with different datatypes
#3869Bug: CRASH (Should not happen) while running View13
#3885Bug: GC Crash - Object&Function
#3887Bug: Rebol/Core called with -w crashes
#3891Bug: Bad file path error output
#3895Bug: VALUE? crashes the interpreter
#3896Bug: load {#object! [...]} bug
#3912Bug: TCP server crashes when receiving messages from clients
#3916Bug: Viewtop editor title sometimes doesn't change
#3920Wish: Keep same word binding on all to-word functions.
#3925Bug: forall and return in function inconsistency
#3931Bug: Invalid string crash
#3935Bug: "Read beyond network port" crash
#3956Bug: Remainder (and rem) bugs
#3960Bug: Problem with LOAD MOLD/ALL and datatype! values
#3961Issue: infinite loop
#3965Bug: read-net/garbage collection crash
#3969Bug: reduce/only crashes
#3973Wish: Export REBOL's convolution filter
#3974Bug: Fix problems with gradients in DRAW
#3977Bug: BROWSE ignores string index
#3978Bug: Bogus activation of hot text colors on refresh (VID Hot Style Feel)
#3979Bug: Trace output too long
#3968Note: Load/header is not working in Rebol/Core

Overview of 2.6.1 / 1.3.1

This release addresses a security issue in 1.3.0 (launch/as-is), along with some other important fixes, and a few nice enhancements mainly to the Viewtop and the installer (14 in all). This is a minor, but important, release.

Fixes and Enhancements

#3791Bug: 'to-binary on image! doesn't return BGRA binary!
#3787Bug: Editor F5 key does not work.
#3786Bug: IMAGE! doesn't work in ROUTINE!
#3384Bug: Lost Find
#3784Wish: View Editor could display filename in window title
#3785Bug: Rebol View desktop icon Start up directory
#3778Bug: View-root should end with a slash
#3777Bug: Registry - Home and Sandbox need final slash ensured (easy)
#3783Bug: Viewtop frontpage background doesn't refresh properly
#3794Wish: Goto a URL (REBOL or Web) could include file://
#3788Bug: 'request-color/color does not accept 'none - legal REBOL color
#3779Bug: Bug in Viewtop icon text
#3796Bug: In the installer the "run REBOL" option runs wrong exe
#3790Bug: ARC's Draw command on closed arc

Overview of 2.6.0 / 1.3.0

There are hundreds of fixes and enhancements in this version of REBOL; major new features were added; it is a milestone release.

There were many more enhancements we wanted to include, but there just wasn't time. A top priority for this project was to ship a new official version of REBOL that can be used to build new SDK releases, Link clients, and the OSX port. With that done, the goal is to provide more frequent official releases with small enhancements while planning the next major release.

One of the most important things about this project is that its success is due to the combined efforts of REBOL Technologies, the REBOL community, and the open source Antigrain AGG library. Two previous "version 1.3" projects and many unofficial releases provided much of the foundation for this release, not to mention the valuable experience of learning what didn't work when coordinating and managing a project like this.

Important Changes

In addition to the changes listed below, there are a large number of fixes in this release, many of which were included in beta releases (1.2.5 - 1.2.57). See the list of RAMBO bugs in this document to get an idea of what fixes have been included.

New GC (Garbage Collection)

This is the biggest change you can't see. The new garbage collector is a major enhancement and should reduce or eliminate the small number of cases where the old GC caused problems. A great deal of testing was done on the new GC, but be sure to report, via RAMBO, any errors you think might be related as soon as you see them, and please include (minimal) example code to reproduce the problem.

Path Evaluation

Paths now allow paren! values, which is a major change and will greatly simplify certain kinds of expressions. For example, the following two statements are now equivalent:

a/(1 + 1)

>> n: 3
== 3
>> b: [1 2 3 4 5 6 7 8]
== [1 2 3 4 5 6 7 8]
>> b/(n + 1)
== 4
>> b: [1 2 3 [a b c] 5 6 7 8]
== [1 2 3 [a b c] 5 6 7 8]
>> b/(n + 1)/3
== c

In addition, path literals (unevaluated paths) can now easily be evaluated later with DO:

>> do 'system/stats
== 5012769
>> s: 'system/stats
== system/stats
>> do s
== 5013601

>> blk: [system/stats]
== [system/stats]
>> do blk/1
== 5020369


The PARSE function was enhanced in a number of ways, and even more improvements may be considered in the future.

val: #"c"
test: context [len: 4 str: "ab"]
parse "ababababccc" [test/len test/str some val]
do does [parse "a" [#"a" (return 4)]]

catch [parse [%test.txt] [set file file! (throw file)]]


info? http://somehost/some-big-file

New Modal System for VID

This is something the community has been asking for, and now they have it. This is a major change, but was designed so normal REBOL code won't be affected at all. The only code in danger of breaking is code that hacks into the old window event handling system.

There are a lot of other VID enhancements planned, but they were deferred for a 1.3.x release. They are a high priority, but also require a great deal of thought and design work; we didn't want to rush them out the door now and have to fix things later.

Revised Image Datatype

On the surface, images work as they have in the past for the most part; internally, the code was improved and optimized. It contains better support for pixel modification, copying of areas (cropping), alpha channel support, and a lot more.

There are some changes that may affect existing scripts if they operated directly against the image data or manipulated images at the pixel level.

A significant change is that image datatype support was added to REBOL/Core as well.

All New DRAW Effect and DRAW Function

The DRAW effect has undergone major changes in this release to better support scalar vector graphics (SVG). DRAW now uses the AGG library from, which was created by Maxim Shemanarev as the new engine behind the DRAW dialect. With this advanced 2D rendering system in place, REBOL's already-impressive graphic capabilities have been extended. There are already a number of impressive demo apps that show off this new feature (see the Viewtop Demos folder).

In addition to using DRAW within face effect blocks, a new native has been added that lets you DRAW directly into an image datatype. Alpha channel transparency is fully supported.

VID Face Accessors and Doc Objects

For people new to REBOL, and even some old-timers, learning and remembering which styles use /text, /data, or /value refinements can be a chore. Face accessors solve that problem by defining internal functions that "know" how a style works. You don't have to know which facet is used, or what other functions you might need to call (to update a scroller on a text-list for example); just use the accessors and they'll do the dirty work for you. Here are the face accessor functions:


Updated Functions

arrayNow does a deep copy of initial values if they are a series
callAccepts relative paths, accepts file! argument
extractThrows error on zero skip size; used to loop endlessly
forallbased on new FORSKIP
formFORM of an object or a port now does something useful. The object block and the make object! part is stripped. Fields are output in human readable mold (construct) format.
forskipChanged to return the body block result to match other control functions, like foreach. The word is also no longer left at the tail; it is either reset to the original position or left where a BREAK occurred. This change could break existing code, but our research showed that the risk is very small, and we think the new behavior is much more natural.
getWhen used on objects, returns a block containing values for each word.
lowercaseNow accepts char! values
moldLine breaks within blocks are formatted correctly again; some interim releases had problems with this.
parseNow allows variables and paths; recursion limit increased; allows RETURN and THROW; improvements related to side-effects of parens.
quitAdded /return refinement (lets you set exit values)
reduceAdded /only refinement (used for dialect evaluation)
repeatFixed to allow better recursion. A deep copy of the evaluated block is now bound, with bind, to the iteration variable.
request-fileFixed to keep file names used for saves
reverseReturns same index as passed, rather than the tail
setWhen used on objects, sets all word from the block provided
split-pathcompletely re-implemented; much smaller and faster now.
throw-on-errorRevised to allow any value, including unset
to-local-fileAllows relative paths; returns string datatype
to-stringProperly terminates char! conversions
to-wordNow supports conversion of datatype! values
uppercaseNow accepts char! values

Other functions that were updated in this release:

61 New Functions

as-binaryCoerces any type of string into a binary! datatype without copying it.
as-pairCombine X and Y values into a pair.
as-stringCoerces any type of string into a string! datatype without copying it.
attemptTries to evaluate and returns result or NONE on error.
brightness?Returns the monochrome brightness (0.0 to 1.0) for a color value.
build-attach-bodyReturn an email body with attached files.
build-markupReturn markup text replacing tags with their evaluated results.
caseEvaluates each condition, and when true, evaluates what follows it.
clear-faceClears the primary value of a face.
component?Returns specific REBOL component info if enabled.
constructCreates an object, but without evaluating its specification.
decloakDescrambles the string scrambled by encloak.
delete-dirDeletes a directory including all files and subdirectories.
do-browserEvaluate browser script.
do-thruDo a net file from the disk cache.
drawDraws scalable vector graphics to an image (returned).
dump-objReturns a block of information about an object.
edge-size?Return total size of face edge (both sides), even if missing edge.
eighthReturns the eight value of a series.
encloakScrambles a string or binary based on a key.
get-envGets the value of an operating system environment variable.
get-faceReturns the primary value of a face.
hsv-to-rgbConverts HSV (hue, saturation, value) to RGB
link-relative-pathRemove link-root from a file path
load-stockLoad and return stock image. (Keep cache after first load)
load-stock-blockLoad a block of stock image names. Return block of images.
local-request-fileCreates an OS-specific file requester
modCompute a nonnegative remainder of A divided by B.
moduloWrapper for MOD that handles errors like REMAINDER. Negligible values (compared to A and B) are rounded to zero.
new-lineSets or clears the new-line marker within a block.
new-line?Returns the state of the new-line marker within a block.
ninthReturns the ninth value of a series.
notifyFlashes an informational message to the user. Waits for a user response.
overlap?Returns TRUE if faces overlap each other.
read-cgiRead CGI data from web server input stream. Return data as string.
remove-eachRemoves a value from a series for each block that returns TRUE.
request-dirRequests a directory using a popup list.
reset-faceResets the primary value of a face.
resize-faceResize a face.
rgb-to-hsvConverts RGB value to HSV (hue, saturation, value)
roundReturns the nearest integer. Halves round up (away from zero) by default.
runRuns the system application associated with a file.
scroll-dragMove the scroller drag bar
scroll-faceScroll a face. Default is vertical.
set-faceSets the primary value of a face. Returns face object (for show).
seventhReturns the seventh value of a series.
sign?Returns sign of number as 1, 0, or -1 (to use as multiplier).
sixthReturns the sixth value of a series.
statsSystem statistics. Default is to return total memory used.
suffix?Return the suffix (ext) of a filename or url, else NONE.
tenthReturns the tenth value of a series.
to-itimeReturns a standard internet time string (two digits for each segment)
unlessEvaluates the block if condition is not TRUE.

Other Important Changes, Notes

>> read %/
== [%a/ %c/ %d/ %r/]

RAMBO Changes

Note that not all bug fixes and enhancements were added to RAMBO, so this is really only a partial list. RAMBO is used as much as possible and the best way to make sure your bug report or enhancement request is addressed is to submit it to RAMBO.

Another important thing to note here is that not all the bugs listed were in official REBOL releases. While 1.3 was in development, a number of interim releases were made available for testing and RAMBO was used to track issues in those releases as well.

228 Bugs Eliminated

#3011path-thru patch can return directories
#3012editor slider patch shows slider for correct initial dragger size
#3013grow-facets patch adds locals 'val and 'images
#3014help function: add 'type-name to locals
#3017Fixes bug in ctx-text/back-field
#3018Fixes bug in CHECK style redraw.
#3020fix bug in screen-offset?
#3024fix inform keys
#3029Fix 'scroll-para to handle real values
#3038make the sense facet work
#3042patch view to add a window-feel to every face
#3043fix a slider bug
#3044fix a in-window? bug
#3047fix http open local vars
#3048Fix Gradient bug when width greater than height
#3054fix some bugs in edit-text
#3066BUG: offset-to-caret
#3067BUG: choice style has strange behaviour (1.2.12)
#3069BUG: edit-text doesn't scroll text well (big edge)
#3070offset-to-caret 2
#3071core - return set-word!
#3075effect - fill-pen bug
#3076effect - grid bug
#3077effect - draw image bug
#3078fix set-font style none bug
#3081bug mold/all image
#3082bug to-image
#3083core - unknown type value
#3085field bug
#3088Unable to open IMAP box twice
#3090Cookie parsing only catches the last cookie
#3092drives under windows
#3095View should run in Quiet mode
#3096Spaces are lost in the first element of a text-list
#3098core - math -2147483648 sign
#3099core - math -2147483648 type
#3102HIDE command CRASHES Rebol/View!!!
#3104filled polygon causes Script Error: Not enough memory during the SHOW
#3107CALL function can cause crash
#3109alpha-channel top-left pixel bug
#3111size-text return 0x0 instead of none
#3113core - parse recursion limits
#3120Rebol crash on making email
#3124Old path SET bug.
#3125TO-ANY-... functions are invalid
#3129call/wait broken on linux
#3130On Linux, CALL interferes with TCP port wakeup
#3132crop effect bug
#3135clear bug with hash!
#3139Patch for parse-header-date
#3141Alias internal image names to remove .suffixes missing
#3155Email read fails to recognize byte stuffing
#3156BUG: Drop-down style never close the list
#3157BROWSE %1 arg substitution
#3159Linux: system port interferes with TCP ports
#3160VID - radio can crash REBOL/View
#3162Crash on large Window Face View
#3165To on Ports crashes REBOL.
#3166Greyscale jpg doesn't load properly, 2/3s of image is black.
#3167Wrong picture used in 'radio style
#3170Skip fails with negative values and images
#3171Skip and next have different behaviour with images
#3172image/alpha crash - image/alpha problems
#3176to-struct crash
#3181IMAGE! element size is inconsistent.
#3185Crash in LOAD when loading an #[???object!] in docs/changes-2-6.txt
#3191access/clear-face of area,field styles don't reset line-list
#3197Browsing with spaces in URL
#3201recycle error on loading large hash!
#3215para/tabs: 0 crash
#3218Make integer!
#3226Can't go to local twice
#3228[???mold] in docs/changes-2-6.txt -> 1 (=integer)
#3235Desktop script links broken when in path w/spaces
#3238delete leaves port open on error
#3240loading a molded/all function discard the argument datatypes
#3241layout sets new/var wrong (binding), 'panel could make good use of it.
#3244list-reg crash under 2.1.23 2.1.24
#3245make object crash under 1.2.25
#3251Compositing bug?
#3253to-image crash (1.2.25 1.2.26)
#3254'request : missing /local img
#3263prot-http.r incomplete as provided in the sdk/command
#3264edge: none causes CRASH
#3265side effect of permit pair with image!
#3270UNIQUE can crash on LIST!s ?
#3271some ctx-text functions are only in global context...
#3272to-routine crashes, should be removed
#3273fix some bugs in base-text
#3274Correct a check-line bug with edge
#3275broken images with size specified
#3278The big image change: BGR to RGB as format
#3279image copy out of bounds -> CRASH
#3282fix var in layout (1.2.28)
#3285to list! bug/inconsistency
#3286'Poke on image! doesn't accept pair! index
#3287find/tail list!
#3289Tab & Hidden fields
#3297bad view/options causes crash
#3300Core version 2.5 displayed in desktop
#3301'to-list unattended result with empty block
#3302pick/poke indexing with pair!
#3304opposite ranges: alphamul vs image/alpha
#3308optimize as-pair a bit more
#3310'mold does not format like before
#3315copy/part image short length
#3317Corrupted User's Guide for core documentation
#3319Random string does not return correct datatype
#3320copy/part skip out of the image data crash (big image ?)
#3326CALL should accept file! datatype
#3328Editor Save-As shows "Open" button
#3329uniform to-integer, to-tuple, to-pair ""
#3330to email! & char > 128
#3331close system/ports/output in console crashes REBOL
#3335Min and Max
#3338recursion of infix operator into prefix context
#3339HSV conversions
#3341LAYOUT - 'across after 'origin loses Y offset
#3345Hover tripping in Viewtop editor "menus"
#3348Should be able to execute remote scripts on startup
#3378Memory bug in cloning images
#3379copy/deep memory bug (and crash) with images
#3388Crash on View field
#3401Parse-Header bug
#3403[???alpha] in docs/changes-2-6.txt Two files, an image, read/lines from http and parse crash
#3409block set returns a wrong value
#3412to-binary of bitset
#3415code not table-based in Micro-Database in Cookbook
#3425BUG: to string! with char! values
#3427to block! applied to list! is broken
#3436x: native [???none] in docs/changes-2-6.txt crash
#3437func [???a] in docs/changes-2-6.txt[???none] in docs/changes-2-6.txt does not return an error
#3438REPEAT is broken for recursion
#3440recursive do string crash
#3445field/access/clear-face : does not work with hide text
#3451Crash while handling an error when recycle/torture enabled
#3463Construct/with crash
#3464CASE crashes with false and none as last expression.
#3466SDK encappers crash on Unix platforms if their STDIN is redirected
#3467Non-blocking tcp server crashes REBOL 2.5.5x Alpha
#3474random/secure result value is different from return of platforms
#3475rebol does not return a message to it's calling shell
#3483date! weekday refinement
#3485Doc typo: Chapter 14 Section 4
#3487RAMBO Error:
#3488Mac OS : rebcmd can't open library
#3490change-dir not working on disks
#3505new path evaluation is inconsistent and crashes Rebol
#3506ALPHA - Using colon : alone.
#3507insert/dup crash
#3508ALPHA - paths paren crash on block changes (
#3509ALPHA - Info? broke on top level directories
#3511insert crash with out-of-range
#3515ALPHA - bug in new path evaluation
#3524out-of-range path crash
#3530Rambo displays Pending Changes as New (Unviewed) Submissions
#3533Allow THROW in PARSE
#3534Parse documentation bug - missing file
#3537Crash with temporary series values - memory corruption
#3540Parse-Xml - executes an unwanted print statement
#3544Async doc error
#3546make function! crash
#3548to routine! crashes console session
#3555REQUEST-FILE problem when given file names
#3558copy/part and image!
#3560get-modes bug?
#3561Problem when restoring after dual screen mode
#3566Windows FAULT - with 'read/lines' AND 'join' on large file.
#3586[???alpha] in docs/changes-2-6.txt Port timeouts can cause crash
#3591out-of-range crash
#3594Linux: ports not always closed on exit
#3596Parse and Garbage Collection
#3597PARSE Past Tail Positions
#3613Manual (documentation) is missing text for some examples
#3614calling browse 5 times results in CRASH (Should not happen) - expand series overflow
#3616Rebol crashes on reading dir (GC bug?)
#3618debase returning wrong result for bad chars
#3622to-idate needs to pad hour and include seconds
#3624Invalid data type during recycle
#3629Docs still contain open/nowait, which is nonexistent
#3632Crash after typing ":" character
#3638net-log call in prot-http.r in SDK/Command
#3645integer division crash
#3646integer negate and subtract bug
#3656copy/part open/direct/read/binary what-dir 100000 ;=CRASH
#3667dump-obj system/words BUG
#3678Recursive panes cause Rebol/View to crash silently
#3680Decimal rounding problem
#3685PARSE error when at end of data if PAREN is used.
#3687Bitwise Ops return wrong result on Little Endian CPUs
#3693draw native: random data at start of image
#3694Draw: Unable to set pen color to transparent
#3697Crash when ANDing two images
#3699Rebol view (stable version) on windows crashes
#3703[???throw] in docs/changes-2-6.txt function attribute and return (in 1.3 prototypes)
#3704Desktop does not sync icons (in 1.2.110 prototype)
#3705as-binary and as-string gives wrong length on images
#3706crash with or/and/xor and mixed datatypes
#3711AGG spline command with negative argument : crash
#3713IMAGE! should not be any-string
#3714View Editor error on executing without a saved file
#3716Parse returns [???none] in docs/changes-2-6.txt on encountering
#3717Problem with creating objects in newer versions (>1.2.104)
#3718Bug in Info?
#3720request-dir/dir should clean the path
#3721Overflow when converting from decimal to integer
#3723list-dir console freeze for a while when given a file
#3724reverse on list! returns wrong result
#3728request-dir dead clicking on hard drive root
#3731Script Error: Invalid graphics face object - 0x0 face size
#3733Control - L to launch Reblets from Viewtop crashes
#3735Read/lines crashes if it fails inside a does routine
#3737CALL doesn't accept file! datatype
#3738to-local-file returns file! not string!
#3741SAVE/HEADER does not work properly
#3754'do not open desktop on startup' option in user settings does not work
#3757REBOL/View stores preferences in %user.r but does not use them.
#3761Stats: improper block termination?
#3762Wrong links in
#3764Odd pop-up requestor state bug
#3765'create-link ignores sandbox
#3767Desktop does not display proxy server setting
#3768Uninstall doesn't work when .r assoc was not made
#3769Possible event system bug related to security requestors
#3773Installer does not finish after

50 Wishes Granted

#3009Add check-line and radio-line styles
#3015desktop patch accepts a url or file argument
#3021Get and Set-face-value, and other functions
#3023Gives focus to the pass field when /only is used
#3027exists-thru? patched to return file instead of true.
#3028Simple function that checks if faces overlap each other.
#3030Images for VID Buttons
#3031Images for VID Checkboxes
#3032Images for VID Radio Buttons
#3033Images for VID Arrow/Slider/Scrollbar Buttons
#3036changes request key from shift+y shift+n to y and n
#3037new style auto-panel with auto size
#3039Unified default background color
#3046Systray Support
#3049to-pair should accept decimals, also + - /
#3050fix para in area
#3052Adds many hot-keys to REQUEST
#3062return the edge size of a face
#3073core - extend bind to any-word!
#3074core - extend in to any-word!
#3093Rounding functions
#3094Use COPY not system/words/copy
#3117Authenticated SMTP
#3123Evaluation Stats
#3126allow [???echo] in docs/changes-2-6.txt
#3131add image/alpha
#3144'unless (negation of 'if)
#3148Add /multiple refinement to import-email
#3150shortcut: bind [???code] in docs/changes-2-6.txt object!
#3209patch view to add a window-feel ONLY if feel functions are none
#3213Object! enhancement request
#3223image pair as offset/size
#3258Default RELATED setting for RADIO etc.
#3276make image! reduce [???10x10] in docs/changes-2-6.txt
#3281optimize as-pair a bit
#3334style auto-docs
#3336Extend IN (and BIND) to work with port!
#3351HSV Effect
#3354Colorize depth added
#3381Should DO evaluate PATHs?
#3416uppercase & lowercase to accept char!
#3471Smtp authentication
#3472Allow parens in path!s to be evaluated
#3559return from a paren parse rule
#3567DRAW function added
#3568PARSE allows paths for values
#3615request-dir Dialog Box
#3700complement on binary! and image!
#3712IMAGE Index? as an XY PAIR
About | Contact | Support | Privacy | LicenseREBOL Technologies 2016