Portable Object Compiler

The Portable Object Compiler, a language and a runtime library for producing C programs that operate by the runtime conventions of Smalltalk systems such as Squeak or GNU Smalltalk in a UNIX environment, as described in Brad Cox's SIGPLAN article on the Objective-C object oriented pre-compiler or in his OOPSLA Producer paper on the Smalltalk to Objective-C translator.

Independent of any specific ABI (Application Binary Interface), the Portable Object Compiler and runtime can be used in combination with a wide variety of tools. There is no CPU (processor) specific code or dependency on specific stackframe layout or calling conventions.

Objective-C and Smalltalk offer Object Oriented Programming in which data, and the programs which may access it, are designed, built and maintained as inseparable units called objects.

The Portable Object Compiler is backed by a library which supports Smalltalk's interpretation of messaging; binding of a message to its target routine is done at run time. This library contains a growing number of primitive class definitions, such as an Object class whose abilities are inherited by every object in the system, and provides many, but not all, capabilities of Smalltalk. The language provides features such as Blocks, also known as enclosures.

The software has been ported to many flavors of UNIX and non-UNIX operating systems, with, as the name suggests, a special emphasis on portability. Ports exist for Solaris SPARC, Solaris AMD64, IBM AIX PowerPC, HP-UX IA-64, various flavours of Linux (RedHat, SUSE, Fedora, Slackware, Ubuntu, Alpine Linux, Gentoo), FreeBSD, DragonFly BSD, Microsoft Windows 10 Pro 64bit and many other ports.

The compiler is compatible with, and can be used with many different C compilers, such as GNU gcc, clang (LLVM), Intel icc, Sun DeveloperStudio cc, Tendra tcc, WATCOM wcc, Microsoft Visual C++, lcc-win32, and a great variety of other C compilers in order to generate optimal code for each specific platform and purpose.

Because the compiler is written in itself, you'd normally start with a binary package of the software. For a few platforms, there are also packages of the shared libraries of the software, useful for applications that depend on those shared libraries :

On Linux or UNIX systems, you should install the sources of the software as follows :

Optionally for expert users porting to new or other platforms, where there is no binary package available, build objc-bootstrap-3.3.24.tar.gz.

The package contains the documentation in HTML format. The manual is also available here, and there's a note on Objective-C blocks. The text Objective-C for Unix is also a source of information on the architecture of the compiler.

Richtext is an X11 / Motif / Lesstif text editor (and RTF file previewer) written in Objective-C and available at  https://sourceforge.net/projects/objc-richtext/.

Here's a screenshot of the Richtext previewer/editor on Slackware (or FreeBSD) with a KDE desktop and another screenshot on Solaris 11.3 (with a GNOME 2 desktop). Another screenshot on Solaris 11.4 with the GNOME 3 desktop.

Also you can clone from github a package for simple TCP/IP programming in Objective-C : tcp-ip-objc.

Subscribe to the Portable Object Compiler mailing list at Sourceforge.