Objeck is an object-oriented computing language with functional features. The language has ties with C#, Pascal and Scheme. In this language all data types, except for higher-order functions, are treated as objects. The language contains all of the basic features of a general-purpose (Turing complete) programming language with an emphasis placed on OOP simplicity. The programming environment consists of a compiler, virtual machine (with associated garbage collector and JIT compiler) and command-line debugger. The compiler emits binary bytecode that is executed by the runtime system. The runtime JIT compiler has the ability to translate the bytecode into IA-32 or AMD64 machine code during execution for improved performance. Also, check out the IRC channel #objeck on freenode.net.
Below are links to tutorials and code examples. Also, check out the Programmer's Guide for additional information.
Benchmarks and Performance
Benchmark programs from the The Computer Language Benchmarks Game. Test environment was Linux 3.2.0-24-generic; i686; i7-2760QM.
The Objeck garbage collector is adaptive, meaning that the amount of memory used by a program will adjust based upon demand. For instance, if demand is higher during the execution of a certain portion of the program the GC will allow more memory to be allocated before collection is invoked. If demand is low, a portion of unused memory is returned back to the operating system. The GC also manages blocks of cached memory in order to reduce the number of OS allocation/deallocation requests.
Check out the sample code and download the latest version.
- Native platform support for Windows, Linux and OS X
- Support for object-oriented programming (virtual classes, interfaces, enums, functions and methods)
- Functional support (high-order functions)
- Runtime introspection and object serialization
- Support for polymorphic methods and functions
- Class library support (math, files, sockets, xml, http, collections and etc.)
- Command line debugger
- Automatic memory management (mark and sweep garbage collection)
- Native runtime JIT support for IA-32 and AMD64 architectures
- Compiler optimizations (short-circuit evaluation, method inlining, constant folding, strength reduction, instruction simplification)
Here's what's coming up in future releases.
The following features will part of the next release v3.3.x
- Support for generics
- Boxing for basic types
These features are being worked on but haven't been scheduled into a release
- GTK2 support (25%)
- New optimizing JIT compilers (current JIT compilers are performing well in benchmarks) (50%)
- SOAP support (33%)
Now that the system base has matured I've been activity looking for opportunities to tweak the language system and enhance runtime support (i.e. incorporation of 3rd party toolkits like Qt). If you're interested in building and/or enhancing Objeck please refer to the Developers Page.
Please refer to the following links for additional information and help.