[VM][All][Plugin][was: RE: [updates] 11 more...]

Brent Pinkney Brent at astarte.co.nz
Wed May 17 20:53:25 UTC 2000


What about the LargeIntegers plugin ?


-----Original Message-----
From: Raab, Andreas [mailto:Andreas.Raab at disney.com]
Sent: Wednesday, 17 May 2000 19:51
To: squeak at cs.uiuc.edu
Subject: [VM][All][Plugin][was: RE: [updates] 11 more...]


Folks,

For all of you - here's a brief overview what has happened:

[Note: The detailed version containing all the internal stuff Tim and I came
up with is at http://minnow.cc.gatech.edu/squeak/1448]

Those of you haven't been following the entire discussion here's the major
difference between 'before' and 'after' the CS: You will be able to compile
pretty much every subsystem [*] into *either* a standalone shared library
*or* as a builtin with the VM. Meaning that the person building a VM can
decide which plugins should be builtin (such as file, socket, BitBlt
support) and which should not. This allows for either scenario of
redistributing a whole bunch of shared libraries or just a single executable
file (I've been building a 'fat' VM yesterday which came out at about 500k
and did not require any external shared library whatsoever).

[*] Here is the list of subsystems:
	- Graphics:
		BitBlt
		Balloon 2D
		Balloon 3D
	- I/O:
		File support
		Socket support
		Sound support
		MIDI support
		Serial port support
		Joystick and Tablet support
		Async file support
	- Numerics:
		FFT primitives
		FloatArray primitives
		Matrix2x3 primitives
	- Others:
		Compression/decompression primitives
		Klatt synthesizer primitives
		GSM Codec primitives
		FFI support
		DSA primitives

The changes do require the use of named (instead of indexed) primitives
since the primitives need to be dynamically looked up. This raises the
question of backward compatibility (most primitives in the current system
are indexed) and I've added compatibility stubs that will allow you to run
any image using the current set of indexed primitives on any newly built VM.

The question is when do we throw the switch to actually use the named
primitives?! I think we'll do this only after 2.8 is out and VMs are
available that have the named primitives as well as the indexed ones.
Therefore, we'll still use indexed primitives up to 2.9alpha and then, when
the new VMs are widely available we can transform all the primitives
forward. The entire process also ensures that we'll be able to run any image
<= 2.8 on any newer VM (unless we cut the compatibility stubs which
shouldn't happen before 3.0).

Oh, and one important final aspect about the entire process: With the
changes there will be no need for any platform to have the concept of shared
libraries (as long as the plugins are builtin) so that this will make named
primitives available even if there's no OS support for it.

Summary: In short, nothing changes (at least not visibly ;-) Except for
having a lot more flexibility when building VMs.

  - Andreas





More information about the Squeak-dev mailing list