Menu

Tree [78594a] master /
 History

HTTPS access


File Date Author Commit
 CVS 6 days ago stes stes [78594a] Add link to Taskmaster paper
 DependencyGraph 2023-02-11 stes stes [c38d35] add spec file for objc-bootstrap
 examples 2024-05-31 stes stes [ae1bf5] add howmany-utmpx.m example
 html 2023-10-07 stes stes [bb4edb] Create configure with autoconf 2.71
 include 2023-03-12 stes stes [bb332f] fix Exception class -otb build
 man 2023-03-12 stes stes [bb332f] fix Exception class -otb build
 pkg 2023-10-07 stes stes [bb4edb] Create configure with autoconf 2.71
 rtf 2023-10-07 stes stes [bb4edb] Create configure with autoconf 2.71
 src 2024-05-31 stes stes [ae1bf5] add howmany-utmpx.m example
 util 2024-02-11 stes stes [ad875e] Upgraded to autoconf 2.72
 words 2023-02-11 stes stes [c38d35] add spec file for objc-bootstrap
 Amiga.txt 2020-12-25 stes stes [25c64c] Add AmigaOS 4 for PowerPC to Platforms.txt
 Beos.txt 2022-10-19 stes stes [4d694f] Update URL info
 Books.txt 6 days ago stes stes [78594a] Add link to Taskmaster paper
 Changes.txt 2024-05-31 stes stes [ae1bf5] add howmany-utmpx.m example
 Ibmvac.txt 2019-10-15 David Stes David Stes [f696b2] Import to GIT
 Install.txt 2024-03-26 stes stes [8ae717] Fix LEX='flex --nounistd' example
 Intro.txt 2024-02-11 stes stes [ad875e] Upgraded to autoconf 2.72
 Lcc.txt 2019-10-15 David Stes David Stes [f696b2] Import to GIT
 License.txt 2019-10-15 David Stes David Stes [f696b2] Import to GIT
 Make.bat 2019-10-15 David Stes David Stes [f696b2] Import to GIT
 Makefile.in 2023-02-17 stes stes [b42f82] install manpages in man3objc
 Mpw.txt 2019-10-15 David Stes David Stes [f696b2] Import to GIT
 Platform.txt 2024-07-13 stes stes [0100d0] add gcc 13.3 as compatible C compiler
 Readme.txt 2023-02-17 stes stes [b42f82] install manpages in man3objc
 Setup.bat 2019-10-15 David Stes David Stes [f696b2] Import to GIT
 Visual.txt 2020-09-30 stes stes [6cf827] Add example PATH in Watcom/VisualC++ readme
 Vms.txt 2019-10-15 David Stes David Stes [f696b2] Import to GIT
 Watcom.txt 2020-09-30 stes stes [6cf827] Add example PATH in Watcom/VisualC++ readme
 block98.html 2020-09-20 stes stes [27a062] Update to 3.3.20
 bootSrc 2023-10-07 stes stes [bb4edb] Create configure with autoconf 2.71
 browse.h 2019-10-15 David Stes David Stes [f696b2] Import to GIT
 config.h.in 2019-10-15 David Stes David Stes [f696b2] Import to GIT
 config.vms 2019-10-15 David Stes David Stes [f696b2] Import to GIT
 configure 2024-05-31 stes stes [ae1bf5] add howmany-utmpx.m example
 configure.in 2024-05-31 stes stes [ae1bf5] add howmany-utmpx.m example
 ctags.awk 2019-10-15 David Stes David Stes [f696b2] Import to GIT
 indent-patch 2019-10-15 David Stes David Stes [f696b2] Import to GIT
 manual.html 2020-05-10 stes stes [c22264] Update 3.3.19

Read Me

Portable Object Compiler (c) 1997-2023.  All Rights Reserved.


GETTING HELP
------------

For help and reporting bugs : send email to me (stes@telenet.be)
or to the objc-discuss@lists.sourceforge.net mailing list.

Subscribe to the mailing list at https://sourceforge.net/p/objc/mailman/

INSTALL
-------

Read the Install.txt file.

If this is a first-time installation, you have to start by installing a bootstrap package; do not install this package until you have installed a bootstrap package.  This can be either a binary package of the Portable Object Compiler, or in some cases when no binary "port" exists an objc-bootstrap.tar.gz source package.

LICENSE
-------

Read the License.txt file (the "GNU Library General Public License").

The license file explains the difference between,

 (a) "software using the Portable Object Compiler", and 
 (b) "software based upon the Portable Object Compiler".


LATEST VERSION
--------------

The latest sources of the Portable Object Compiler are available at:

	https://sourceforge.net/projects/objc/

WHAT'S INCLUDED
---------------

The "objc" distribution consists of the following parts :

	0. "VICI", interactive Objective-C debugger and interpreter
	It doesn't currently work but may be an interesting project for someone.

	1. "objc", the actual compiler

	Consists of driver script ("objc") and binary ("objc1").
	"objc1" is a precompiler for C.
	The binary "postlink" is used
	for preparing tables for runtime initialization.

	2. "objcrt", the Objective C Runtime Library for "objc"

	This is a modern, portable, "all C" Objective C runtime
	There's absolutely no assembly language needed, nor is there
	a dependency on stack layout, register allocation conventions etc.

        The runtime and compiler support using the frame pointer,
	as a general purpose register (as in the x64 ABI, for instance).

	Portable Object Compiler supports builds with "noframeptr" so that
	an optimizer can use the frame pointer as a general purpose register.

	Most other runtimes, were derived from pre-"all C"-Stepstone 
	runtimes, so this is an important point of difference.

	3. "objpak", the "Object Pak" Objective C Collection Classes

	Simple, powerful set of classes.  Very portable.
	Can be used to develop with different compilers, then
	port with 'objc'.  Compatible with ICpak101, the collection class
	library described in Brad Cox book, and used by existing
	Objective-C packages that were developed with Stepstone objc.

	4. "cakit", the "Computer Algebra Kit" Objective C classes

	Small, concise, interface to a large set of classes for
	polynomial computing and arbitrary precision integer arithmetic.

	5. Source of compiler and "oclib", a set of Objective C classes for
        parsing C (and the Objective C extensions to C)
  
"objc" and "vici" are written in Objective C itself.  It's all
written in portable Objective C : any Objective C compiler
should be able to compile the "objc" compiler.  From time to time,
we try a configure with other Objective-C compilers, to ensure that our
sources are still compatible with e.g. Stepstone Objective C compiler.

NOT included is a C compiler : in order to be able to use "objc", you will
need to elsewhere find a compatible C compiler.  This should be no problem
since one of our goals - see below - is to make "objc" work with as many C
compilers as possible.  On UNIX systems, the (free) "gcc" compiler is a
possibility (not needed, but possible).  Another possibility, is to use
the (free) "lcc" compiler or the "tcc" TDF compiler system.


NICE FEATURES
-------------

	1.Easy to install or to modify.

	2.Works on many systems with the native cc, debugger, profiler etc.
	(Unix, Windows, Macintosh, Beos, OpenVMS etc. see Platforms.txt file)

	2a. Option for auto reference counted memory management (-refcnt).
	This uses the native malloc(), free() etc. but the compiler generates
	statements for keeping track of references.
	(Tested on a few platforms, such as IRIX 5.2 with the SGI malloc).

	3.Built-in possibility of tracing Objective C messages. (OBJCRTMSG)

	4.Straightforward "C" messenger; "inline cache" messenger.
	Forwarding C messenger (to support -doesNotUnderstand:).
	
	5.All classes get a +initialize message at start-up, rather than
	'each class receives a +initialize before it receives its first
	message'.

	6.Some support for translating Objective-C to Smalltalk (-st80 option)

	7.Automatic archiver.  Compiler generates code for classes to save
	and load objects to and from disk (for all instance variables of
	type "id").

	8.Option for Garbage Collection (using Boehm gc package).

          Option for automatic reference counted memory management 
          (doesn't require Boehm).  

	9.Exception handling scheme (using Objective-C Blocks) that allows
	to specify a default handler to be executed.

	10.Supports dynamically loading Objective-C modules on Windows,
	FreeBSD, HP-UX, Solaris, Linux, IRIX, Digital Unix etc.

	11.Has a switch for double indirection for Object identifiers (id as
	a handle instead of a pointer). (-become: method)

	12.Supports forwarding messages (-doesNotUnderstand: method)

        13.Support for Embedded SQL in Objective-C (Informix only for now)  

	14.Great system for experimentation with your own additions/extensions
	to Objective C !


WANT TO HELP?
-------------

If you like "objc", feel free to send e-mail to, "stes@pandora.be".
I'm especially interested in bug-fixes, of course.  And in ports
to machines that I don't have access to (e.g. CP/M, Atari).