[up]

Architecture specific Features, Limitations & Notes

Index

Featurelist

Due to the different capabilities of the underlying operating system, Smalltalk/X implementations may provide different additional features depending on the type of hardware/system you use.

The following table lists missing features per architecture;
the OS release numbers listed in the first column are for the machines ST/X has been tested on.


--------------+-----------+------------+-------------+-------------+----------+----------+----------+
machine       | shared    | dynamic    | just-in-time| incremental | fast     | 3D GL    | 3D OpenGL|
	      | libraries | loading    | compilation | compilation | oldSpace | graphics | graphics |
	      |           | of code    | of bytecode | with STC    | realloc  |          |          |
	      |           | libraries  | to machine  | to machine  | (mmap)   |          |          |
	      |           |            | code        | code        |          |          |          |
==============+===========+============+=============+=============+==========+==========+==========+
	      |           |            |             |             |          |          |          |
LINUX-386-AOUT|          LINUX-a.out is no longer actively supported                                |
(1.1.59)      |          contact eXept if you must have one                                         |
(1.2.6)       |           |            |             |             |          |          |          |
--------------+-----------+------------+-------------+-------------+----------+----------+----------+
	      |           |            |             |             |          |          |          |
LINUX-386-ELF |    yes    |    yes     |    yes      |   yes       |   yes    | limited  |  yes     |
	      |           |            |             |             |          | (VGL)    |          |
	      |           |            |             |             |          |          |          |
--------------+-----------+------------+-------------+-------------+----------+----------+----------+
FreeBSD       |    yes    |    yes     |    yes      |   yes       |   yes    | limited  | limited  |
(vsn 4.5)     |           |            |             |             |          | (VGL)    | (MESA)   |
	      |           |            |             |             |          |          |          |
--------------+-----------+------------+-------------+-------------+----------+----------+----------+
	      |           |            |             |             |          |          |          |
LINUX-alpha   |          LINUX-alpha is no longer actively supported                                |
ELF           |          contact eXept if you must have one                                         |
	      |           |            |             |             |          |          |          |
--------------+-----------+------------+-------------+-------------+----------+----------+----------+
	      |           |            |             |             |          |          |          |
SGI-IRIX      |    yes    |    yes     |    yes      |   yes       |   yes    |   yes    |   yes    |
5.2, 5.3      |           |            |             |             |          |          |          |
	      |          SGI-IRIX is no longer actively supported                                   |
	      |          contact eXept if you must have one                                         |
	      |           |            |             |             |          |          |          |
--------------+-----------+------------+-------------+-------------+----------+----------+----------+
	      |           |            |             |             |          |          |          |
UNIXWARE      |    yes    |    yes     |    yes      |   yes       |   yes    | limited  | limited  |
SYSV5.2       |           |            |             |             |          | (VGL)    | (MESA)   |
SYSV5.4       |           |            |             |             |          |          |          |
	      |          UNIXWARE is no longer actively supported                                   |
	      |          contact eXept if you must have one                                         |
	      |           |            |             |             |          |          |          |
--------------+-----------+------------+-------------+-------------+----------+----------+----------+
	      |           |            |             |             |          |          |          |
HPUX10.x      |    no     |    no      |     no      |    no       |   yes    | limited  | limited  |
	      |           |            |             |             |          | (VGL)    | (MESA)   |
	      |          HPUX10.x is no longer actively supported                                   |
	      |          contact eXept if you must have one                                         |
	      |           |            |             |             |          |          |          |
--------------+-----------+------------+-------------+-------------+----------+----------+----------+
	      |           |            |             |             |          |          |          |
HPUX11.x      |    no     |    no      |     no      |    no       |   yes    | limited  | limited  |
	      |          HPUX11.x is no longer actively supported                                   |
	      |          contact eXept if you must have one                                         |
	      |           |            |             |             |          | (VGL)    | (MESA)   |
	      |           |            |             |             |          |          |          |
--------------+-----------+------------+-------------+-------------+----------+----------+----------+
	      |           |            |             |             |          |          |          |
AIX           |          AIX is no longer actively supported                                        |
3.2.5         |          contact eXept if you must have one                                         |
	      |           |            |             |             |          |          |          |
--------------+-----------+------------+-------------+-------------+----------+----------+----------+
	      |           |            |             |             |          |          |          |
ULTRIX        |          ULTRIX is no longer actively supported                                     |
(mips)        |          contact eXept for more information                                         |
4.3 / 4.4     |           |            |             |             |          |          |          |
--------------+-----------+------------+-------------+-------------+----------+----------+----------+
	      |           |            |             |             |          |          |          |
REAL/IX       |    no     |    no      |    ???      |    no       |   no     | limited  |    no    |
(88k)         |           |            |             |             |          | (VGL)    |          |
ULTRIX        |          REAL/IX is no longer actively supported                                    |
	      |          contact eXept for more information                                         |
	      |           |            |             |             |          |          |          |
--------------+-----------+------------+-------------+-------------+----------+----------+----------+
	      |           |            |             |             |          |          |          |
SUNOS 4.x     |          pre-Solaris versions are no longer supported                    |          |
non solaris   |          contact eXept for more information                              |          |
sparc         |           |            |             |             |          |          |          |
--------------+-----------+------------+-------------+-------------+----------+----------+----------+
	      |           |            |             |             |          |          |          |
SUNOS 5.x     |    yes    |    yes     |    yes      |    yes      |   yes    | limited  | limited  |
solaris       |           |            |             |             |          | (VGL)    | (MESA)   |
sparc         |           |            |             |             |          |          |          |
--------------+-----------+------------+-------------+-------------+----------+----------+----------+
	      |           |            |             |             |          |          |          |
i386 SOLARIS  |          i386 SOLARIS versions are no longer actively supported          |          |
	      |          contact eXept for more information                              |          |
	      |           |            |             |             |          |          |          |
--------------+-----------+------------+-------------+-------------+----------+----------+----------+
	      |           |            |             |             |          |          |          |
NeXT NS2      |          NeXTStep rel.2.x is no longer actively supported                           |
(68k)         |          contact eXept for more information                                         |
	      |           |            |             |             |          |          |          |
--------------+-----------+------------+-------------+-------------+----------+----------+----------+
	      |           |            |             |             |          |          |          |
NeXT NS3      |          NeXTStep rel.3.x is no longer actively supported                           |
(68k)         |          contact eXept for more information                                         |
	      |           |            |             |             |          |          |          |
--------------+-----------+------------+-------------+-------------+----------+----------+----------+
	      |           |            |             |             |          |          |          |
dec osf/1     |          dec osf/1 is no longer actively supported                                  |
(alpha)       |          contact eXept for more information                                         |
	      |           |            |             |             |          |          |          |
--------------+-----------+------------+-------------+-------------+----------+----------+----------+
	      |           |            |             |             |          |          |          |
dec alpha VMS |          VMS is no longer actively supported                                        |
(openVMS 6.x) |          contact eXept for more information                                         |
(openVMS 7.x) |           |            |             |             |          |          |          |
--------------+-----------+------------+-------------+-------------+----------+----------+----------+
	      |           |            |             |             |          |          |          |
Windows       |    yes    |    yes     |    yes      |    yes      |   yes    |          |   yes    |
95/98/ME      |           |            |             |             |          |          |          |
	      |          Windows 95/98/ME are no longer actively supported                          |
	      |          contact eXept for more information                                         |
	      |           |            |             |             |          |          |          |
--------------+-----------+------------+-------------+-------------+----------+----------+----------+
	      |           |            |             |             |          |          |          |
Windows       |    yes    |    yes     |    yes      |    yes      |   yes    |          |   yes    |
NT/2K/XP(x86) |           |            |             |             |          |          |          |
Vista, Win7,  |           |            |             |             |          |          |          |
Win8, Win10   |           |            |             |             |          |          |          |
32 and 64bit  |           |            |             |             |          |          |          |
--------------+-----------+------------+-------------+-------------+----------+----------+----------+
	      |           |            |             |             |          |          |          |
Mac-OSX       |    yes    |    yes     |    yes      |    yes      |   yes    |  limited |   yes    |
10.8          |           |            |             |             |          |   (VGL)  |          |
64bit         |           |            |             |             |          |          |          |
--------------+-----------+------------+-------------+-------------+----------+----------+----------+
Agenda:
1) shared libraries (DLLs)
shared library support depends on the system to support reentrant position independent code; most systems using ELF support this.
With shared libraries, all classes code is shared by all running Smalltalk applications. Without shared libraries, code is only shared between processes which execute the same program. (i.e. the same executable).
The standard Smalltalk executable is shared in any case, since UNIX automatically shares the memory when multiple programs execute the same program text.

2) dynamic loading of machine code
if supported, compiled classes and/or classlibraries (so called packages) can be loaded into the executable without a need to leave the environment.
On systems which do not support this, you have to leave Smalltalk, build a new executable (i.e. relink Smalltalk) and restart in that new environment.

3) incremental compilation to machine code
if supported, primitive code can be entered and accepted in the browser and are immediately available for execution.
If not supported, primitive code can be entered, but the system creates a non executable stub method, which traps into the debugger if ever executed. For real compilation, the method has to be compiled using the stc batch compiler and the system relinked and restarted as described above.

4) 3D GL graphics support
on most systems, a subset of the GL functionality is implemented by use of the VGL graphics library which implements a GL subset. This subset does not support light sources, z-buffering, textures. On SGI machines, an interface to the full set of GL graphics is provided.
OpenGL support is either implemented by a vendor-provided openGL library (SGI and Windows systems) or via the MESA graphics package, which is reasonably compatible to openGL.

5) Xt widget support
on most systems, wrapper classes and helpers to include Xt widgets are provided. Xt support is not maintained and provided "as-is".

... - to be validated
currently being developed/verified/tested. The feature is not officially released for that architecture.

*yes - provided "as-is"
this feature works partially, but NeXTStep may have trouble unloading dynamically loaded code. The feature is not officially released/maintained for that architecture.

??? - to be validated
currently being developed/verified/tested. The feature is not officially released for that architecture.

Supported display types

The following table lists display type & depth combinations and possible limitations; If you encounter problems on your hardware configuration, please let us know.


-----------+--------------------------------------------------------------+
	   |           Display depth (i.e. bits/pixel)                    |
-----------+--------+--------+--------+--------+--------+--------+--------+
	   |        |        |        |        |        |        |        |
	   | 1      | 2      | 4      | 8      | 15     | 16     | 24     |
	   | (mono) |        |        |        |        |        |        |
	   |        |        |        |        |        |        |        |
-----------+--------+--------+--------+--------+--------+--------+--------+
tested on: | SUN    | NeXT   |  Linux | XFree  | XFree  | XFree  | XFree  |
	   |        |        |  XFree | HP     |        |        | Ultrix |
	   |        |        |        | SGI    |        |        |        |
	   |        |        |        | Ultrix |        |        |        |
	   |        |        |        | AIX    |        |        |        |
===========+========+========+========+========+========+========+========+
visual     |        |        |        |        |        |        |        |
===========+========+========+========+========+========+========+========+
	   |        |        |        |        |////////|////////|////////|
StaticGray |  ok    |  ok    |   u    |  ok    |////////|////////|////////|
	   |        |        |        |        |////////|////////|////////|
-----------+--------+--------+--------+--------+--------+--------+--------+
	   |////////|////////|        |        |////////|////////|////////|
GrayScale  |////////|////////|  (1)   |  (1)   |////////|////////|////////|
	   |////////|////////|        |        |////////|////////|////////|
-----------+--------+--------+--------+--------+--------+--------+--------+
	   |////////|////////|        |        |////////|////////|////////|
PseudoColor|////////|////////|   ok   |   ok   |////////|////////|////////|
	   |////////|////////|        |        |////////|////////|////////|
-----------+--------+--------+--------+--------+--------+--------+--------+
	   |////////|////////|        |        |        |        |        |
TrueColor  |////////|////////|   u    |   ok   |   ok   |   ok   |  ok    |
	   |////////|////////|        |        |        |        |        |
-----------+--------+--------+--------+--------+--------+--------+--------+
	   |////////|////////|////////|////////|////////|////////|        |
DirectColor|////////|////////|////////|////////|////////|////////|   u    |
	   |////////|////////|////////|////////|////////|////////|        |
-----------+--------+--------+--------+--------+--------+--------+--------+
Agenda:
ok ....... tested
u  ....... untested
// ....... non-existing or useless configuration
(1) ...... you should use a StaticGray mode instead
With 8-bit Pseudocolor displays, image display may lead to ugly output, due to running out of available colors while showing images. You may get better results by using a fix color palette (for example: a 6x6x4 palette).


As of version 3.4.x, the windows platforms are only usable with 16bit or 24bit TrueColor display modes. 8bit display mode will be added later.
We do not plan to support 4bit or monochrome displays in the future.

Display specific notes

The following section describes display specific information.

Monochrome and 16-color displays

Although still present in the code and configuration files, monochrome and 16color (old EGA) displays are no longer officially supported. We will continue to test ST/X against such systems, but will not guarantee that all such systems work reasonable.

Exceed

Keyboard

The Exceed X-Server (on a Windows-95/NT box), catches "ALT"-key combinations and does not deliver events for them to the X-client. Therefore, all shortkey-commands mapped to "CMD-x" (which is the left "ALT"-key) do not work in the base configuration.
(can Exceed be reconfigured ?)

As a fix, an exceed specific configuration file ("d_exceed.rc") is provided, which maps those functions to corresponding CTRL-key combinations.
The interrupt key (normally "CTRL-c") is remapped to the "PAUSE" key.

Thus, under exceed, the shortKeys are:

  CTRL-c    copy
  CTRL-x    cut
  CTRL-v    paste

  CTRL-a    accept

  CTRL-d    doIt
  CTRL-p    printInt
  CTRL-i    inspectIt

  CTRL-s    search
  CTRL-f    search again forward
  CTRL-b    search again backward

  CTRL-g    goto line

  CTRL-f   page forward
  CTRL-b   page backward
  CTRL-d   half page forward
  CTRL-u   half page backward

  PAUSE   interrupt window process & open debugger
  CTRL-y   interrupt window process & abort operation
Some shortKeys are lost with this setup, though.
You may like to edit your own "d_exceed.rc" if you don't like this setup.

Window redraw while resizing or moving

Under Exceed, views do not get informed while being moved or resized - until the move or resize operation is finished.
Therefore, no redrawing will take place.
This is an Exceed limitation - not an ST/X bug.

Architecture specific notes

The following section describes architecture specific information.

64bit Support

64bit versions are available for the X86_64 and the Digital Alpha CPUs. These will store integers of up to 63 bits in a single pointer, thus possibly showing slightly better Integer arithmetic performance.

Of course, the main advantage is the much bigger object memory space available.

Digital Alpha CPU

On the alpha, ST/X uses 64bit object pointers and 63 bit integers; this results in somewhat added memory overhead, due to a larger average object size (since all pointers are twice as long) and somewhat more CPU overhead, since in many cases twice the amount of data has to be moved as compared to 32 bit systems.
Also, the code size (both static and JIT-generated) may be larger, since constant pointers may now require a 3-instruction load sequence
(although the JIT translator tries hard to generate its code into the lower 32bit space, to avoid this).

On the other hand, some integer arithmetic is faster, since many operations are now possible without leaving the SmallInteger range (which is now 63bit).

X86_64 CPU

Both 32bit and 64bit versions are available. The 64bit version requires more memory and may be slightly slower than the 32bit version (for reasons described above).

OpenVMS

RMS Filetypes

By default, all files as created by ST/X will have sequential-streamLF record format.
The FileStream class provides an additional entry (#openWithMode:attributes:), which allows the record format to be specified as described in the RTL-Documentation of the "creat" call. To access existing non-stream files, you may want to create a subclass of FileStream and redefine the instance creation method(s) to specify appropriate attributes.
However, be aware that such a class will not work as expected on other systems.

Positioning of non stream files

Positioning within a file is not possible on an arbitrary byte boundary with some record formats. For example, a file with a variable-record-format may only be positioned to the beginning, the end or to a record boundary.
For those formats, ST/X positions the stream by re-reading all of the file from the beginning - which may be slow for big files.
Make certain, that your ST/X sourcefiles are converted from this format to streamCR format; otherwise, a performance penalty is to be payed when the browser accesses those and seeks to a methods source position.


Windows-95 / Windows-NT

Windows-95, Windows-98 and Windows-XP are no longer supported. Please contact exept, if you need ST/X on any of them.

Interrupting a runaway primitive

Since both Windows-NT and Windows-95 have no concept of an interrupting signal, there exists no satisfying mechanism to interrupt runaway primitive code (i.e. endless loops).
Although, Smalltalk/X allows such code to be halted and inspected in the debugger AND it is possible to resume or terminate such a halted process, it is NOT possible to abort or terminate such a process in a clean way (i.e. with unwind blocks evaluated).
The reason is that the CTRL-C break is executed by a different OS-thread on Windows systems, and there is no provision provided to "push an interrupt context" onto a suspended threads context from another thread.

The result is that the stopped process can only be resumed or hard terminated - it will NOT perform its unwind or cleanup actions, when terminated; and it is not possible to unwind its stack and make it resume somewhere higher in the method calling hierarchy.
Notice, that the above only applies to endless looping primitive code - both primitive standard File-I/O operations and looping Smalltalk code can be interrupted as usual.

Dynamic stack grow

Since the Win32 version of Smalltalk/X maps each of its processes onto a native thread, and Windows-95 performs some obscure (undocumented and braindamaged) stack validations in most API calls, all stack must be preallocated and the Spaghetti-Stack mechanism as used with the Unix versions cannot be used.
The effect is that a process cannot resize its stack in a stackOverflow exception handler.

Blocking API calls

All API calls are (supposed to be) non blocking. Other Smalltalk threads continue to execute. To ensure that, blocking API calls are executed by a separate thread, and the Smalltalk thread waits for it to complete. For this, all API- and external library calls have to be wrapped into a macro, which implements the interaction with the API-call thread.

Please send us a bug report if we forgot to wrap an API call correctly and made it blocking.

If you encounter problems with a blocking API call, and ST/X does no longer respond, press CTRL-C twice in the ST/X-console window, which should bring you into the miniDebugger, where a C-continue command should resume execution (although, the thread which did the blocking call will be halted).

Display configuration

The Windows graphics interface (currently) always uses 24bit colors and ignores any color palette.

Notice: The folowing is no longer a problem these days.

This works in all display modes (i.e. also in 16- and 256-color modes), but may lead to ugly color dithering when certain colors are drawn in 16 color or 256 color modes.
For best results, please use either a 16bit hiColor or a 24bit trueColor display mode with Smalltalk/X.
The windows view-style itself uses the colors as configured in the Preference Panel - therefore, this mode should also look reasonable in 16- and 256 color modes.

Redraw bugs

When moving non-STX windows over an ST?X view, garbage (blank) areas are sometimes left, which are not correctly redrawn. This does not happen, if other ST/X views are moved (probably some thread-locking error ?)

X-Display under Win32

The Windows version allows for both a local windows display and a remote X11-display to be used. To use an X11-display, start "stx" with the environment variable "DISPLAY" being set to your X displays name, i.e., in a command window, execute:
    SET DISPLAY=myDisplay:0
    stx

Smalltalk/X will use the local display if that shell variable is either not set, or a connection to that display cannot be established.

It is even possible to run Smalltalk/X in multihead configurations, where both a local native display and multiple remote X displays are handled concurrently.
(read the documentation in the DeviceWorkstation class on how to setup multiple display operation)

Partial implemented (buggy) features

Limited drawing capabilities of Windows-95

Windows-95 does not support all drawing styles (or style combinations): this includes:

We do not plan to add workaround code, since we expect those bugs to be fixed in upcoming windows releases.
(You should probably use Windows-NT, anyway - or use a real OS ;-)


Mac-OSX

X Display Only

There is currently no support for native Carbon or Cocoa display services. ST/X uses the X window system (XQuartz) for display. This must be installed before running ST/X.

Some limitations result from this:


[stx-logo]
Copyright © 1996-2016 Claus Gittinger Development & Consulting
Copyright © 1999-2016 eXept Software AG

<info@exept.de>

Doc $Revision: 1.59 $ $Date: 2016/11/11 23:36:31 $