The Pier project is an attempt to create a platform that provides interfaces for 3D graphics, audio, networking, and various other features natively. It doesn't allow FFI and, with a strong focus on GPU programming, attempts to be compatible with any graphics API an implementation might use as its backend. Pier has been in development for 4 years.
Pier is a procedural programming language which is very similar to C and runs on the Pier VM. The platform specification and the VM was created several years ago as an experimental project. Today, the VM provides the necessary capabilities for many types of software, and the platform specification defines all features that the VM will eventually support.
Both the compiler and VM are still being tested, and aren't ready for production use. I'm currently using Pier to develop a 3D game engine, and the platform will continue to improve over time as bugs are found & features get implemented.
• Graphics API (compatible with both modern and old graphics APIs)
• Shaders, represented in a bytecode format
• GPU compute
• File I/O
• Multi-display support
• Controller, touchscreen, keyboard & mouse support
• Device orientation and position support
• Image capture from display or cameras
• 2D/3D audio
• Sound transmission, absorption, and scattering
• Audio file creation and editing
• Audio recording
• Audio playback
• Video file creation and editing
• Image file creation and editing
• Video playback
• Image loading
• Ray tracing
• Networking (TCP + UDP)
The compiler is available on GitHub at github.com/gabecampb/pier, the VM at github.com/gabecampb/pier-vm, and the assembler at github.com/gabecampb/pier-asm. There are also some useful libraries, such as the standard library, available at github.com/gabecampb/pier-libraries.
See the tutorial page on this site for instructions on how to get started with Pier.
The compiler is still missing short-circuit evaluation, but there are only few known bugs and the language is mostly implemented. Error messages need improvement, the libraries aren't fully complete, and there's some refactoring to do.
The VM supports the necessary features, but is still missing implementation of many of the features the specification defines as optional. Of course, all of the typical CPU instructions are implemented. The graphics API is OpenGL 3, and the traditional (rasterized) graphics pipeline is fully implemented.
Access to all of the platform's features will be exposed through libraries over time.
Short-circuit evaluation will be added and the compiler will be optimized for performance & cleaner code generation.
Compiler error messages will also be improved.
Hopefully the VM will receive JIT support in the future for a significant performance improvement, but further completion of the VM is taking priority. There's still a good amount to be done; testing, bug fixing, and implementation of compute shaders (which will be emulated on the CPU) are some parts of that. I will likely implement audio/video support via FFmpeg.