Ambrai Smalltalk for Mac OS X
Dorin Sandu and Mark Suska
VM - the basics
- Interpreter
- mark and sweep gc
- direct pointers
- non-moving objects
- weak reference
It's small, it's portable. The VM is 68k compiled, the image (with all source) is 3MB. The VM is implemented in C++ and has been run on other platforms than Mac OS X. Minimal set of primitives, reclaims circular weak by key refs. Given the small number of primitives, platform ports are possible and not too hard. Have run it on Windows and older versions of Mac OS.
Native Framwork
- interfaces to shared libs
- automatic interface generation from C headers
- C code translated one to one to ST equivalent
- functions and callbacks
- type checking
- bounds checking
Native calls can call back into Smalltalk. The VM is single threaded from an OS perspective.
Now a look at the system - the browsere looks like a VW browser without Store loaded. Some of the 'system' level code (Behavior, Blocks, etc) is a bit sparse, but it is a new implementation.
Smalltalk Environment
- no development time state or behavior in kernel classes
- "SmalltalkEnvironment current" - gets current state info
- Modular design of the entire system - tools, app, GUI, environment, kernel, native ifc, VM and libs - cleanly separated. For instance, GUI can be cleanly removed
Generating a standalone image - scripts to remove unneeded classes (is there wizard type support for that? Not clear).
Now Dorin is talking about the UI framework. The goal - provide a consistent, intuitive API over the Mac API (which is confusing and hard to use, in his opinion. I wouldn't know :) ). The GUI framework is using the kind of composition pattern you would expect - doesn't look that different from what I've seen in VW (at the 30,000 foot level, mind you). Resource management was critical as well - need to manage the lifecycle of the widgets, since it's all native. Heh - the demo ended with the screen saver coming up after he didn't touch the kbd for awhile :)
Questions
Why did you do it?
To learn, interested in the problem. We were just interested in the problem
Is it downloadable?
Alpha available within a month. Probably free for personal use, will probably follow the Dolphin model of sales
Plan to make commercial then?
yes
GUI Builder?
I have one for Dolphin, will port it to this
How long have you been working on this?
Started in 1998, 2 years. Broke for 2 years, then started again. Mostly nights/weekends, started pushing once the talk for StS got accepted.
Any decent sized apps done?
have ODBC, probably will port GLORP. Have an app they use to manage tasks for this project
With non-moving objects, is the allocator more complex? - some fragmentation issues, but have had image running for weeks. Compact memory on image save.
What is your commercial model? - Dorin was mostly a Windows guy - other dev environments for Mac are expensive, and/or limited. Taragetting the hobbyists and smaller developers who do not want to spend the "big bucks".
Cooperating with other ST vendors (small) like Dolphin? - possible, but needs exploration.
Eliot - suggests that they partner with Dolphin

