Differences from HelFORTH
Many of the ideas of Reva can also be found in HelFORTH. The comparisation here notes some differences between Reva 6.0.2 and HelFORTH 2.37.
Higher level differences
- Reva makes extensive use of FFI, while HelFORTH needs to directly link to libraries (which also means custom binaries for different tasks). On Linux HelFORTH's default binaries do not depend on C-libraries.
- Reva uses compressed, precompiled memory images to generate turnkey-applications. HelFORTH uses just in time compilation of tokenized FORTH-sources for turnkeys.
- HelFORTH has a complete ANS compat layer.
- The Windows-interface of Reva is more complete.
- HelFORTH is released under the MIT-License, since the development is based in Germany and there (as in most European countries) is by law (Urheberrecht) no concept of giving something into "public domain", the MIT-License fits best what the author can do to offer the maximum of freedom for the users.
Lower level differences
- double precision integers</i\> in HelFORTH use the native x86 order on the stack. This is contrary to what most other FORTHs do - Reva also uses the traditional order. This difference is important when porting math stuff from or to HelFORTH - in HelFORTH you can use the ANS layer words to quickly work around that problem.
- The system of loops is completely different. HelFORTH is at this point more oriented on ANS. Examples:
: simple-loop begin ." again and again" cr repeat ; : custom-increment 0 101 do i . -10 +loop ; : n-repetition 123 for ." hello " loop ; : while-and-friends 123 begin dup 124 u<while dup . 1- repeat ;
- In HelFORTH you can always use while and friends in every kind of loops. There is no need to have only one while inside a loop - you can have many whiles for one loop.
- HelFORTH uses an optimizer for code generation. This has low influence on programming, but you need to know that in case you want to make words that manipulate recent compilations.
- The word r@ is called r
- later is called later>
Differences from RetroForth
- Retro is provided and maintained for more operating systems than Reva
- Retro embeds source code directly into the binary; it has to compile this upon startup. Reva's code is all compiled in the binary image.
- Retro only has turnkey support on Linux; Reva supports it under Windows and Mac as well
- The Linux and FreeBSD versions of Retro have no external dependencies (Reva requires glibc)
- Reva has better support for file operations
- Reva has a larger library of code distributed with it