- Internal compiler refactoring of: expressions compilation, type casting and ANY/ALL support.
- Greatly improved runtime error reporting: now it reports both source line number and source file name where the error occured. It works in debug mode only (-g command-line option).
- Aliased struct names can now be tested separately in typed (RTTI) functions.
- Callback function attribute removed. It is no more needed and any function can now be used as a callback. In addition a new cdecl attribute is now accepted to allow the switch to C calling convention, when passing a function as argument to an imported C function.
- 21 issue reports closed.
- More than 2000 new unit tests were added (mostly generated using scripts wrote by Peter WA Wood) for a total of now 8613 tests.
September 21, 2011
Red/System v0.2.2 released
This release is mainly a bugfix release that solves several old issues. It is also now correctly synchronized with all the current bindings done for Red/System. The main changes are:
Labels:
alias,
bugfixes,
callback,
compilation,
red/system,
release,
runtime errors
September 20, 2011
Red at Software Freedom Day 2011
I have been invited at the Software Freedom Day 2011 (September 14th) to give a talk about Red. Here are the presentation slides and the video.
If you are experiencing issues seeing the slides in flash format, here's a PDF version.
I am not a great speaker, so you might want to go through the slides first, and eventually have a look at my corresponding comments in the video (it is too long anyway). I need to make shorter and faster presentations in the future.
If you are experiencing issues seeing the slides in flash format, here's a PDF version.
I am not a great speaker, so you might want to go through the slides first, and eventually have a look at my corresponding comments in the video (it is too long anyway). I need to make shorter and faster presentations in the future.
August 10, 2011
Red/System v0.2.1 released
This new release is bringing a lot of important bug fixes and some new features for Red/System. The new PRINT function might break some existing scripts, but should be easily fixable.
New features
- Variable-arguments function support
- RTTI function limited support
- Polymorphic and variadic PRINT function
- Command-line arguments access
- Added stack low-level manipulation native functions: push, pop
- Access to stack pointer and stack frame pointer (reading/writing)
- Subtracting two pointers is now possible
- Preprocessor improved to solve macros recursively
- New built-in hexdump debugging functions
- External library access unit tests (thanks to Peter)
PRINT function examples:
print 123
123
print "hello"
hello
print [123 "hello"]
123hello
print [123 tab "hello" lf "world" lf]
123 hello
world
a: 1 < 2
b: "hello"
print [a tab b/2]
true e
Bugfixes
- Complex arithmetic expressions involving pointers, path access and type casting are now much more reliable. 89 new unit tests were written to help fix the bugs and track regressions.
- Complete list of fixed issues available in Github's tracker.
Specification document
- Updated to match all new and changed features
Red runtime
- Memory allocator implemented in Red/System, documentation is pending.
As you can see, no vacation this summer for Red project!
July 17, 2011
Mac OS X port released!
Red/System Mac OS X port is now completed and on par with Windows and Linux ports. The new Mach-O file emitter supports all current Red/System's features including #syscall and #import directives.
Now that all major 3 OS are supported, I can say that the Mac OS X file ABI and function call ABI are really the most complicated one to support from scratch, the Windows one (PE/COFF) being the simplest (with its own set of oddities, but simpler) and Linux's ELF somewhere in between. Among the issues we had to identify and deal with:
- Stack alignment on 16 bytes constraint at the point of every library call (meet with the infamous "gate keeper" code causing segfaults and bus errors on misaligned calls)
- Extra stack entry for each BSD system call.
- Working around dynamically linked libraries info extraction that need to be copied from each library header to the generated executable image. This could have prevented cross-compilation.
- The need for direct CALL opcode in the generated IA-32 code instead of indirect ones used for PE and ELF library function callings.
A couple of notes about usage:
- The library you declare in #import definition needs to be located in /usr/lib/ or else, you need to provide a full path to the library.
- The file emitter should support up to 255 imported libraries (Mach-O limit), but it has been tested only with one so far (libc.dylib), so if you have anything odd happening with more than one imported library, please fill a bug report in github's tracker, or post a message to the mailing-list.
Enjoy!
July 4, 2011
Red/System goes beta!
This is a major milestone reached on the Red roadmap. Red/System is now in a beta state, which means that it is good enough, both in design and implementation to be used for building applications.
A huge collective effort has been made by all contributors to reach that state during June, in a single month, we produced:
- 190 new commits (total = 354 now), more in a month than in the three previous ones!
- 3600 more unit tests (total = 6230 now)
- 2800 more LOC (total ~ 6000 LOC now)
- 70 issues closed on github's tracker
- 8 more revisions of specification document
This is what can be called an "intense" month of work!
There are still a lot of features that are lurking in the corner for inclusion. Red/System features are not set in stone, the language will evolve to match our needs, as a support tool for building Red. It will now follow a bit more organized release cycle to help users and contributors have a more stable base to work with.
The version number has been bumped to v0.2.0. From now on, only non-disruptive changes will be pushed on the main branch, other changes will go into a separate development branch until we decide to make a new release, merge new features and increment the version number. This cycle should be short, on a weekly basis (each week or two, depending on the development branch content). If this organization does not fit well the development progress, we will adapt to a more adequate one.
I cannot resist to show you the new unit testing output when running the complete tests suite (just run the %tests/run-all.r script):
Quick-Test v0.5.0
REBOL 2.7.6.3.1
Red/System Test Suite
ok - logic.............................76 / 76
ok - integer............................0 / 0
ok - byte..............................40 / 40
ok - c-string..........................20 / 20
ok - struct...........................116 / 116
ok - pointer...........................68 / 68
ok - cast..............................66 / 66
ok - alias.............................22 / 22
ok - length............................11 / 11
ok - null..............................11 / 11
ok - not...............................24 / 24
ok - size..............................36 / 36
ok - function...........................2 / 2
ok - exit...............................9 / 9
ok - return............................24 / 24
ok - modulo............................20 / 20
ok - infix..............................2 / 2
ok - conditional.......................13 / 13
ok - byte-auto.......................3492 / 3492
ok - integer-auto....................2106 / 2106
ok - alias-compile......................3 / 3
ok - cast-compile......................16 / 16
ok - comp-err...........................4 / 4
ok - exit-err...........................3 / 3
ok - int-literals-err...................1 / 1
ok - output.............................3 / 3
ok - return-err.........................5 / 5
ok - conditions-required-err...........23 / 23
ok - inference-err......................1 / 1
ok - callback-err.......................3 / 3
ok - infix-err..........................2 / 2
ok - not................................1 / 1
ok - Red/System Test Suite...........6230 / 6230
in 0:00:16.3
A big thank to all the following contributors who are working hard each day to help me bring Red to life:
Andreas Bolka
Rudolf W.Meijer
Kaj de Vos
Peter W A Wood
Cheers!
EDIT: for those coming here for the first time and willing to test Red/System, please follow the link to Github's repository, you will find some instructions there for getting started.
May 31, 2011
Short look on last three months
Three months have passed since Red has gone public. It seems short, but a lot happened since then and I wanted to sum up the work accomplished for the people interested in Red that don't have the time to follow the progress daily on every channel.
Development
- Red/System is implemented at 98%
- ~2600 unit tests were created (thanks to Peter WA Wood)
- Red/System language specification draft added, now close to 95% of completion
- Code base almost doubled: 60KB to 110KB (~3200 LOC)
- 164 commits on Github, 44 by contributors
- 4600+ page views on Github's Red repository
Main new features
- New datatypes: byte!, logic!, pointer!
- Linux port (thanks to Andreas Bolka)
- Syllable port (thanks to Andreas and Kaj)
- MacOS X port in progress
Community
- 0MQ library support (Kaj de Vos)
- Quick-Test framework (Peter WA Wood)
- 3 contributors on Github, 22 followers
- 65 issues opened on Github, 53 closed (thanks to Rudolf Meijer)
- 8 blog posts, 10'000+ page views
- #red_lang: 130 tweets, 39 followers
- Mailing-list: 32 members, 45 topics, 150 posts
- IRC: 5 people permanently logged
Last but not least, we got an article on OSNews two days ago that boosted the page views on red-lang.org (+3'000) and Github's repo (+1'000).
Thanks for all people supporting Red, one way or another. This is a very good start and a big incentive for me to work even harder on the next steps.
May 25, 2011
Red meeting on 28/05 at Lille
Detailed information to get there are available in this thread from RebelBB forum. See you there on Saturday!
Subscribe to:
Posts (Atom)