But why another FORTH?
I think that FORTH is an interesting language and I like to use it from time to time. When I do so, I like to use some graphics library (raylib) and make little games with it. The problem is, that no FORTH implementation I know of supports C bindings.
Yes, Gforth claims to support C bindings, but they are broken on every platform I try it on. This is most likely caused by Gforth devs forgetting that it's nice to make a release once in a while, so they ship a 10 years old version. You can compile the current version, but I don't like that.
It only works seamlessly on some platforms, requires a lot of additional bloat (latex, emacs...) and I prefer my projects to not require users to compile their own compiler.
This led me to making my own FORTH that supports Gforth-like runtime bindings.
I chose pforth as the base, as it is written in portable C (most implementations seem to be written in assembly for reasons) and has built-in feature to compile in new words, so it was easy to add runtime bindings.
What do I gain?
- All of the FORTH implemented in pforth
- Gforth-inspired C bindings
- Runtime C compilation
- Some extra wordsets not present in pforth
- Some non-standard words (some borrowed from Gforth, some not)
- Global ex:forth library system
For more information, consult the manual.
What do I loose not gain?
- Some standard wordsets are missing
- Currently only *NIX platforms are supported (Works on Windows via Cygwin)
- Some pforth incompatibilities:
-
TOcan no longer assign to words created viaVARIABLEandCREATE - By default, paths are resolved relative to the currently evaluated file.
- Defining custom C words at runtime is done a bit differently
!!WARNING!!
This is a hobby project by one guy who knows nothing about FORTH, C, or even language implementations in general. It is mainly intended to fulfill my needs and probably has a few bugs/flaws.
I do not try to sway you from using it. If you want to use C libraries with FORTH, I still believe ex:forth to be a solid choice. Just take it for what it is and don't expect perfection.
YOU HAVE BEEN WARNED!
Development status : Maintenance
I'm currently focusing on projects that do not include FORTH, so ex:forth is not in active development (or used at all for that matter). I do however actively pull all changes made in pforth.
Tho I'm sure that one day I will decide to pick up FROTH once again and more progress will be made. That day has just not came yet.
Made with ex:forth
If you made something cool, please tell me! I would like to know that I made something useful for once.