It has come to my attention that a new release of iMops is available.
This updated version runs on all Intel MacOS systems including the
latest version (Monterey, or v12.3x).
"As an offspring of PowerMops, iMops is an X86-64 native implementation
of the Mops language for Mac OS X. It is also a subroutine threaded,
optimizing Forth compiler and linked with Cocoa/Objective-C."
https://sourceforge.net/projects/powermops/files/iMops/
( Download iMops223.zip release date = 2022-02-05 )
- license is Public Domain
- iMops development system = 952 Kb on disk
- stand alone applications will be much smaller (not tested by me yet)
- full source code is supplied, iMops is written in iMops and rebuilding
the iMops system from scratch is quick and easy
- while my name is listed at the top of the SourceForge page, I have not
been involved with the Mops project since 2004
- I believe Nao Sacrada is the primary developer of iMops, perhaps with
some help from Mike Hore (not sure)
- I notice that the cgrDemo works fine on MacOS High Sierra (v10.13) but
does not work on the latest OS (Monterey). Not sure what is going on
there.
I haven't spent much time with the new iMops yet but what I have seen so
far looks impressive. It is a full featured Forth, surely not fully
ANS compliant but most Forthers will have little trouble adapting.
iMops comes with its own object system that includes many useful
classes, duck typing, multiple inheritance, garbage collection, and
[parameter]-message-object syntax that works great IMO.
One feature of iMops is its native integration to the MacOS including
GUI calls. As a quick test of this I wrote code for a Rosetta Code
exercise that creates a simple GUI window with a push button and
display. The code for that follows. I should stress that while the GUI
integration is nice, it is an excellent Forth even if the GUI is ignored.
-Doug
Ref:
https://rosettacode.org/wiki/Simple_windowed_application
\ iMops 2.23 code
Window+ w
View wview
Button b
100 30 100 20 setFrame: b
" click me" setTitle: b
TextView text
200 30 200 10 setFrame: text
0 value cnt
:noname 1 ++> cnt
0 #ofChars: text SetSelect: text
" Number of clicks: " insert: text
cnt deciNumstr insert: text ; setAction: b
: go
b addview: wview
text addview: wview
300 30 430 230 put: frameRect
frameRect " Test" docWindow
wview new: w show: w
" There have been no clicks yet" insert: text ;