links to this page:    
View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide
Last updated at 4:43 am UTC on 23 March 2009
Alien, squeaksource http://www.squeaksource.com/Alien.html

Copyright 2008 Cadence Design Systems, Inc. Licensed under the Apache License, Version 2.0 (the ''License''); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0

Also known as the Newspeak Foreign Function Interface.

A foreign function interface is a system for interfacing to the external platform’s OS and libraries which on relevant systems are defined according to a C language semantics specified by a platform’s Application Binary Interface (ABI). An FFI can be used to invoke external functionality in libraries and in the operating system such as GUIs, file-system and network interfaces and so on. It must support representation of C data, making call-outs to external functions and allowing call-backs from external code into Smalltalk. The FFI is needed because the Squeak VM’S existing FFI has been found to be buggy bloated and slow.

The Newspeak FFI is a minimal foreign function interface for IA32 (Intel x86) platforms. The FFI is “lean and mean”, providing no support beyond IA32 or 32-bits, and providing limited safety and abstraction. But the current Squeak FFI).

Current there is NOiPhone(ARM) port.

Macintosh - requires a new VM and plugin, fullly supported on MacIntel, partial support on PowerPC (no floating point, no callbacks yet).
Unix - need someone to integrate and build plugin
WIndows - need someone to integrate and build plugin
iPhone - spring 2009 (depends on funding)


For VMMaker folks

Alien-VMMaker-Support which provides the changes to the latest VMMaker from squeaksource to build a Alien aware VM.
Alien-VMMaker-Plugins which is the plugin logic

For users of Alien

Alien-Core-First - Load this first otherwise you'll get a parsing error later
Alien-Core - Load this next, Compiler changes etc..
Alien-LibC - LibC support for os-x/unix/windows
Alien-CoreTest - SUnits

Optional stuff then is

Alien-MacOSX-Core - Objective-C interface
Alien-MacOSX-AppKit- Objective-C application api
Alien-MacOSX-Examples- Objective-C examples
Alien-Win32 - Windows examples.

Lastly load

Alien-Last-Class-Initialize - To ensure all the initializers were run, just in case MC loses it's mind...

Alien FFI.pdf
Alien FFI bowels.pdf