REBOL 3.0 Front Line
Recent 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...
|