Viewtop icon text that is too long now wraps (to a maximum of 32 chars, then it is clipped with "...").
Viewtop has been optimized for folder backdrops. Now complex DRAW-based
folder rendering is only done when necessary.
In Viewtop, folder effects can now refer to a variable FULL-SIZE to get the full
size of the folder face. This can be used in EFFECT and DRAW blocks to allow
Disabled functions like set-browser-path, create-link, and others.
These are not allowed for obvious security reasons (and they were not
exposed in 1.2.1 either). Fixes RAMBO 3765, 3766.
Fixes RAMBO 3768 (Uninstall when no .r associations were selected on install.)
Fixes RAMBO 3769 - Problem caused by loss of Win32 focus when Security requestor popped up. Without focus, the default was to send the event to the console. The dialog now restores prior focus. The escape crash was also fixed.
View 1.2.123, Core 2.5.123 -- 8-June-2005 on Win32 031
A "bookkeeping" release. This is a full merge between stable and unstable source branches.
In theory, should be identical to 1.2.122. But, test this release really
well, because it required merging hundreds of lines of code between branches.
Adds the User preferences panel back into the View desktop (Viewtop). Many thanks to Gabriele for programming this on short notice.
Another default folder, "Public", has been added to the bookmark (left side) of the viewtop.
View folders and files with effect graphics now allow draw commands. This allows you to get a larger number of cool folder backgrounds with no image downloading.
Fixed save/header problem (RAMBO 3741) where "make object!" was incorrectly added.
Forall and forskip have been changed to return their body block results the same as other iteration (loop) functions (e.g. foreach). We concluded it was easier for programmers to remember a single rule for all iteration functions.
Fixed endian problems related to bitwise logical operations and, or, and xor on strings/binaries (RAMBO 3687), and also fixed random/secure on strings (RAMBO 3474).
Fixed results of reverse on list datatypes. (RAMBO 3724)
To make security somewhat better the user.r and rebol.r startup
files are no longer loaded from the current directory.
Non-windows systems will again clear their console (shell) windows before outputing. We had stopped doing this for many builds, but it makes cursor controls problematic on some operating systems. The reason we removed the clear was because in many cases you do not want to erase or scroll the display of prior shell commands.
This release includes a rough draft of the installer. It is likely that there are a number of bugs, so keep good beta test notes.
The graphic image on the installer screen is still preliminary. It is created by a cool DRAW program made by Cyphre. I glued the REBOL logo on top of it. If you have ideas, let us know - but the image must be generated with DRAW, not stored in bitmap format.
Normal installation will create the necessary directories, add a registry entry for REBOL/View, add links to icons and start menu, and add the .r file association.
You can bypass the installation by unclicking the checkbox on the first screen.
In that case, no installation to the registry, no links, and no .r association is done.
The installer will ask you for 2 directories: the first is where REBOL.exe is to be located. This is the home directory (system/options/home). The second is where temporary files, such as the public desktop/Reb files are located. This will be in your user profile application data directory (on newer systems it is located in "documents and settings" area). The installer suggests defaults to both fields.
The desktop will display as the default. This option can be changed with the User settings, but that panel is still missing.
You can uninstall from Windows Add/Remove program, by typing "uninstall" in the console window, by clicking the uninstall option under the user menu, or by passing -u on the command line.
The -i (do not install) and +i (force reinstall) options are working.
The DELETE-DIR function which was only within the installer context has been exported. It is now a supported feature of REBOL. Note that this is a recursive directory delete.
FORM of an object or a port and have it do something useful. The object block and the makeobject! part is stripped. Fields are output in human readable mold (construct) format. This format is very handy if you need to store or view an object. For example, if your application saves a preferences object in an easy-to-edit format.
Here are a few examples:
Repeat function fixed to allow better recursion. A deep copy of the evaluated block is now bound (with bind) to the iteration variable. (RAMBO 3438)
The forall and forskip functions have been modified. These functions now reset their series to their original positions unless a break occurs. They no longer return
with the series at the tail position. Many thanks to Gregg Irwin and Ladislav Mecir for researching, contributing, and testing these changes.
Here is an example (and also see Lots of feedback on FORALL for more details.)
block: [1 2 3]
forall block [n: n + block/1]
[1 2 3]
To-local-file allows relative paths and now returns string datatype. (RAMBO 3738)
Call function accepts relative file paths. (RAMBO 3737)
Index files for Reb sites now allow simplified date and size specification
for file icons.
Only use this change if and when you expect no 1.2 visitors to your site,
because they will ignore the info. For example:
file "Draw Test" %draw-test.r [31-May-2005/16:35-7:00] ; no size needed
Fixes bug in CTRL-L in desktop. (RAMBO 3733)
Fixes bug in request-dir when typing c:/ into dir path box. (RAMBO 3728)
Changes have been made to face verification.
Negative face sizes no longer throw an error, but
invalid offset values will throw an error
or be ignored. If you use negative sizes, please watch for errors during
Throw-on-error has been revised to allow any value (including unset).
Changes made to DRAW mode keywords to get closer to the final dialect:
This release includes the long awaited changes from Gabriele Santilli that are related to the modal window system (popups). He provides these notes:
The system is now capable of handling many modal popups at the same time.
They are handled like in a stack, with the "topmost" popup being
the active one.
Event filtering is not done in the wake-event function anymore.
(This also makes the function simpler.) Each popup face can
have a filtering function in pop-face/feel/pop-detect.
Show-popup will install the correct one depending on the
refinements used and whether the pop-face has faces with an action
in it. See system/view/popface-feel for an example of how to
do your filtering. Actually, this object is probably enough
for most of your needs, just by changing some of its parameters.
Inform/timeout is handled correctly. (Yes, you can safely have
a request/timeout inside an inform, and yes, it will close the
popup and return correctly.) For this Gabriele added
a /timeout refinement to hide-popup. Normal users will
ever need to use it, and if they do, they will probably know what
they are doing (i.e. a guru).
Note: this will likely break some event filtering hacks,
since the wake-event function has been changed.
Users with those hacks should be warned.
Many changes and fixes have been made thanks to the new involvement
of Gabriele Santilli, Richard "Cyphre" Smolak, with some mezz code from Romano Paolo
Tenca. In addition, many lower level C bugs were fixed by Carl Sassenrath.
The team effort is accelerating progress quickly now.
See RAMBO for full list of bug and wish related changes.
In addition to bug fixes, some important new changes have been made by Gabriele:
Added new esmtp:// scheme handler. Example:
port: open esmtp://
insert port [email@example.com [firstname.lastname@example.org] "message with header"]
;See source for send for a working example.
Set-net now allows setting esmtp user and password
set-net [email-addr default-server pop-server
proxy-server proxy-port-id proxy-type esmtp-user esmtp-pass]
;if esmtp-user = 'ask thenit sets up functions to ask for user and password
;when sending email for the first time.
Send now uses esmtp:// for email.
Changed HTTP scheme so that query now does an HTTP HEAD request (instead of GET).
this means now you can safely write info: info? http://somehost/some-big-file
Richard reports that all the primary bugs reported for the new DRAW function
based on AGG engine have been fixed in this release. There are a few more small
details to take care of before DRAW is finalized, mainly the use of keywords
for some of the special draw modes and command attributes.
Includes the new DRAW effect and draw function for scalar vector graphics (SVG). This is the same version of DRAW used in the Async alpha test versions
of REBOL. We will update to a newer DRAW once we know this one is stable.
Changes to how script/header/needs value is parsed. Fixes some problems
and allows better specification of the needs block. However, use of these new
features is limited if you want backward compatibility with older versions of
REBOL (the primary purpose of the needs field). Examples:
Existing /needs format supports:
needs: core ; product name
needs: [2.5.6] ; product version
needs: [sound] ; component existence
needs: [sound 1.2.2] ; component version
needs: [sound 1.2.2 shell 1.5.2]
New /needs also allows:
needs: 1.3.0 ; accepts version w/o block
needs: [view 1.3.0] ; product name, not component name
needs: [core 2.6.1] ; matches to system/core version (all prods)
needs: [view 1.3.0 sound 1.2.4]
Tests will be posted to View desktop in the Tests folder.
This release updates the Win32 file access and control functions.
It only affects REBOL 3.1 platforms and has no affect on Linux, BSD, etc.
With this release, REBOL uses the newer Win32 file system API, rather than the old
Windows "compatibility mode" functions.
In general, 104 fixes many high priority bugs and problems.
See RAMBO's "most currently changed" list to view the
complete set of fixes. There are too many to go into detail here.
A variety of bugs related "index past end" in series have been fixed.
These functions are much more strict now, and will force the index to
the tail position in those cases. (However, it is possible there are still
many more places where this is needed.)
Integer math has changed. Some of the "border conditions" such as the
maximum negative integer, were not properly handled. These should work
A number of important PARSE errors have been fixed. One that is very
important has to do with the way a PAREN would side-effect the parse.
If a paren appeared after then end of the input stream was encountered,
the paren would execute but might also terminate the parse. That meant
that if the paren removed data from the stream, the expression that followed
the paren may not be done. This problem is shown in RAMBO 3685.
Better stack checking algorithm. The method now provides a fixed amount of
recovery space to be able to emit error messages without recursing in the
stack check error handler. Note also that stack default is now 2.8MB allowing
much greater recursion in REBOL functions.
Face related warnings like "face in more than one pane" and "invalid face" are no longer printed to the console. They now throw errors and you can catch them or let them go to
the console. The warning that a face is shown in non-visible pane or closed window
type errors have been removed. Programmers can determine that for themselves.
Very large series allocation or expansion will no longer cause a CRASH popup,
but will throw an error "Out of range or past end". This does not mean you
are out of memory. It means that you are expanding a series by so much (2**30),
REBOL suspects that it is an error.
Maximum negative integer!RAMBO 3099.
Watch for side effects.
Changed decimal equality comparision (coef = 0.1) RAMBO 3680. This is a "compromise value" that produces print
results that are similar to those of cmparision. Of course, in floating point,
nothing is perfect. Use round function for more control.
A few critical crash related errors have been changed to cause the
pop-up ("CRASH") error message rather than just printing to console.
Modified the GC to perform more validation of series values ("Invalid
string width" and "Invalid block width"). If you see such errors pop up
please contact me immediately so I can track them down and fix them.
The GC recycles less often (ballast set to 3M). This means REBOL will boot faster
and recycle less, but the recycle time may take longer. Let me know if this has
any negative effect on real-time apps.