Our friend John Niclasen has released a new version of his Rebol inspired World language.
The release is a major alpha release with lots of new stuff incl. non-blocking networking by implementing libevent.
The World language is a project that John started because R2 had been without much progression for a longer period of time. His needs are for a language that also can help him with more computational approach for the astronomy study he has picked up again, working on his thesis.
From the changelog:
– Added support for calling functions with refinements within contexts (path compiling)
– Added support for values of type struct! to POKE of vectors of pointers
– Added support for TO integer!
– Added support for TO handle!
– Added support for parsing sub-blocks of type any-block! using INTO keyword in PARSE rules
– Changed naming of functions AND’/OR’/XOR’ to AND?/OR?/XOR? in %cortex.w
– Changed TO string! NONE to return empty string “”
– Changed SEND to treat values of type paren! and any-path! as single values
– Changed SEND to return the MESSAGE argument
– Changed SEND to give error, if MESSAGE argument is of type none!
– Fixed bug in SEND / RECEIVE regarding typecheck and memory handling
– Changed TO binary! of a value of type tuple!
– Changed tab-completion at prompt for paths to end on “/”
– Changed tab-completion back to use FIND instead of FIND/CASE (Let’s see, how it goes.)
– Added support for any-word! as CONTEXT argument to BIND (had word! before)
– Reimplemented REDUCE to support multitasking when reducing blocks
– Fixed bug related to context creation and block binding
– Fixed bug related to creation of new (local) variables in tasks
(They will be local, even if same variable wasn’t found in main task.)
– Fixed bug related to TRY and compiling
– Fixed bug related to EXIT in scripts outside any function,
when scripts are executed with DO from within a function
– Fixed bug when calling routing with NONE argument for pointers (treated as NULL)
– Fixed bug with FIND’
– Added new mezzanine HOLD (somehow similar to ALSO in Rebol)
– Added more tests
Changes related to networking:
– Changed OPEN from a native to a mezzanine in %cortex.w
– Added native OPEN-PORT
– Removed TCP and LISTEN port types from AGGREGATE argument for PICK
– Removed TCP port type from VALUE argument for COPY
– Added TCP and LISTEN port types to SOURCE argument for READ
– Added /PART refinement to READ (to be used with socket ports)
– Added /LINES refinement to READ (to be used with socket ports)
– Added /LINES refinement to LENGTH? (to be used with socket ports)
– Removed port! from SERIES argument for INSERT
– Added port! to DESTINATION argument for WRITE
– Added /PART refinement to WRITE (to be used with socket ports)
– Changed system/schemes/socket to system/schemes/tcp
– Moved system/schemes definitions from internal to %cortex.w
– Changed system/schemes from a context! to a map! datatype
– Added scheme actors for MAKE port!
– Added simple HTTP read actor (very basic functionalty)
– Other minor additions, changes, and bug fixes
A new port added in this release for 64-bit Windows. Is it build with MinGW-64-bit and MSYS2.
About all 64-bit versions (Mac OS X, Linux64 and Win64):
World was first developed as 32-bit, and I moved to 64-bit development years ago.
But as this is still alpha release, and I focus on implementing all the functions and getting the whole thing stable,
some datatypes don’t utilize 64-bit adressing completely. This will be addressed in future releases.
As John says about his use of World:
“I am using world myself every day now. At university I use world to read scientific data,
plot graphs exporting as PDF, and do calculations.
I am also using world in a new project including SDL, OpenGL, GLSL, and audio.
Using world this way let me hunt down bugs and now and then make changes to the language design as I see fit to make it brilliant.
If you see any problems, let me know.”
John thank you for all this news and please keep up all the good work!