REBOL 3.0

REBOL 3.0 Front Line

Carl Carl Sassenrath, CTO
REBOL Technologies
3-Sep-2010 18:18 GMT

1045811 visits since 15-March-2007
RSS Feed URL
Send me feedback

Search:

Purpose:
This blog provides advanced technical notes and discussions regarding the design and implementation of the new REBOL 3.0 system. It is intended for experts.

Also Visit:
Carl's REBOL Blog
REBOL 3 Home Page
R3 CureCode

Recent Comments::
0331 0324 0330 0328 0327 0329 0326 0032
Review all comments for week or month

Recent Articles:

26-Aug-2010 - A104 Test Release [0332]
26-Aug-2010 - Clarifying REBOL Lib Interfaces [0331] 2 Cmts
23-Aug-2010 - In A103: REBOL system error #9910 [0330] 3 Cmts
17-Aug-2010 - Progress on callbacks [0329] 2 Cmts
29-Jul-2010 - Access to the host r3lib from extensions [0328] 3 Cmts
20-Jul-2010 - Full Speed Ahead? [0327] 7 Cmts
15-Jul-2010 - Pairs as Floating Point? [0326] 9 Cmts
2-Jul-2010 - WHAT on Modules [0325] 5 Cmts
2-Jul-2010 - Update on Graphics in Host-Kit [0324] 10 Cmts
18-May-2010 - Where's the A99 Host Kit? [0323] 5 Cmts
18-May-2010 - Text code-page mapping [0322] 17 Cmts
11-May-2010 - R3 now on OpenBSD [0321] 1 Cmts
6-May-2010 - R3 A98 Released [0320] 11 Cmts
6-May-2010 - Defining DIR? [0319] 10 Cmts
5-May-2010 - UNSET! is not first class [0318] 4 Cmts
5-May-2010 - General binary conversions [0317] 11 Cmts
Contents- Index of all articles.

26-Aug-2010 - A104 Test Release [0332]

The A104 release is not a general release; it is a draft release for guru developers only. As stated in the prior article, this release merges the primary REBOL lib with the extension lib, simplifying external code. There's only one lib to deal with now.

All prefix for entries in the library have been modified to begin with RL_ so it will produce compiler errors that are easy to spot.

The library can be used for both the host and for loaded extensions. In other words the same lib works as a DLL and also as a callback struct (which uses the RL macros, see prior article.)

Diff the sources and you will notice that there are a few include file changes. Mainly, the reb-lib.h file holds the definitions related to the new library.

This is an untested release. I don't even know if you'll be able to compile it. We will collect comments and suggestions for inclusion in A105.

In addition, A105 will add a test for checking the lib version/compatibility, to prevent the case of loading the wrong DLL and blowing out for mysterious reasons. We will also allow struct alignment checks, because we've seen some developers create bad builds due to improper compiler setup.

Post Comments


26-Aug-2010 - Clarifying REBOL Lib Interfaces [0331]

A104 will be simplifying how libraries and extensions work by merging the REB Lib with the RXI Lib (extension lib).

Here's a diagram to help clarify the design:

Main points:

  • The Host Program is the main program. This is R3/Core, R3/View, or a user's own main program. It contains the Host Lib, functions beginning with OS_ that are passed to R3 Lib.
  • The R3 Library is the REBOL kernel. It is called by the host to evaluate scripts. On boot, the Host Lib is passed to RL_Init to provide a way for REBOL to call OS_ functions when it needs to interface with the OS and other services.
  • A user can create a REBOL Extension which is a lib that gets loaded as a DLL, or is embedded in the host. The extension is accessed via its RX_ functions. It is passed a pointer to the R3 Library in its RX_Init function. When it needs services from the R3 Library, it calls back via the RL_ macros (which reference a structure of function callbacks.) Example above is a user-defined My_Command function that calls OS_MAKE.
  • Embedded extensions can be placed within the Host Program. For example, R3/View includes graphics and other features as embedded extensions. When the R3 Library is called from the host, it can access the RL_ functions directly via the DLL interface (rather than using the RL_ macro interface.)

We intend to use this library interfacing technique across all operating systems, and we hope that objective is achievable.

2 Comments


23-Aug-2010 - In A103: REBOL system error #9910 [0330]

I should mention that a new un-documented assertion was added to the wake-up function in A103.

The 9910 error occurs if wake-up is called on a PORT type that is not at least the size of a standard port object. You can MAKE larger ports, but not smaller ones, because wake-up needs to be able to reference the port-actor and/or port-awake fields.

If you're now seeing this error in your R3 scripts, then we may have some kind of port problem. Please provide a short script in CureCode and we'll investigate it.

Note that this error is valid if you've created an invalid port somehow. In theory, that should never happen, but if we find it does, then we'll document this error, and we can also make it non-fatal.

3 Comments

View index of all articles...

REBOL 3.0
Updated 3-Sep-2010 - Edit - Copyright REBOL Technologies - REBOL.net