News
2026-09-29
- The former Machine Interface Language is now the Arcadia Program Definition Language, or Arcadia PDL for short. Its specification documents the grammar accepted by the current parser, which covers modules, procedures, classes with fields, constructors and methods, and enumerations. It replaces the earlier MIL specification.
-
The separate MIL front end, compiler and MIL back end have been merged into a single compiler module, and the
MIL compiler has been renamed PDLC. The Arcadia PDLC library and the
Arcadia.PDLC.CLIcommand-line tool are now top-level modules,PDLCandPDLC.CLI, rather than living underrepository/. The tool reads its own DDL configuration file and validates that file against a DDLS schema before it compiles. - Arcadia ADL is now documented. The Introduction, Concepts and Terms, Specification, and Module Interface documents describe the language, its concepts, its grammar, and the definitions the module provides.
- ADL assets gained declarative descriptions of materials and textures. A material declares its material type, its ambient color source, and its source and destination blend functions; a texture references a pixel buffer and declares its magnification and minification filters as well as its U and V address modes. The supporting enumerations are blend functions, texture filters, texture address modes, and ambient color sources.
- The new Arcadia.Engine.Text library renders styled text runs from a small markup language. It provides a markup scanner and a markup parser, markup text runs that carry text, glyph source, pixel size, color name, alignment and placement, and a text alignment enumeration. A run's glyph source may be a dynamic token, which the application resolves against live state.
-
Arcadia Engine provides a font cache and an FPS counter, and its window and window backend abstractions
gained operations for icons, title, position, size, fullscreen mode, vertical synchronization, and pixel capture.
Two new examples demonstrate the result:
TextRenderingdraws centered, styled text with a live frame rate counter, andFontTexturedraws a model whose ambient color texture is a font atlas. -
Vertical synchronization is now configurable through the
visuals.verticalSynchronizationconfiguration key and is applied throughArcadia_Engine_Visuals_Window_setVerticalSynchronizationin every window mode. The OpenGL 4 WGL and GLX backends apply the requested swap interval lazily during rendering, because the interval can only be adjusted while the GL context is current. A backend that cannot honor the request ignores it and leaves the driver default in effect. -
Pixels can now be captured from the back buffer.
Arcadia_Engine_Visuals_Window_capturePixelsandArcadia_Engine_Visuals_WindowBackend_capturePixelsreturn a new, canvas-sized pixel buffer, andArcadia_Engine_Visuals_FrameBufferResource_capturePixelsdoes the same for a frame buffer resource. A capture must happen between a successfulWindow_beginRenderand its matchingWindow_endRender; because it reads the back buffer before presentation, it is unaffected by visibility, occlusion, and minimization. -
The new
Arcadia.DDLS.Validatorcommand-line tool validates a DDL file against a set of DDLS schemas. It accepts--ddls=arguments naming the schema files, a--schema=argument naming the schema to validate against, and a--ddl=argument naming the data definition file. It reports diagnostics to standard error and exits with a nonzero status on failure. -
The Arcadia Ring 1 type system supports interface types. Interfaces are registered with
Arcadia_registerInterfaceType, declared withArcadia_declareInterfaceTypeandArcadia_defineInterfaceType, and operations are invoked withArcadia_InterfaceCallandArcadia_InterfaceCallWithReturn. An object type implements an interface by registering a separate dispatch for every ancestor interface withArcadia_registerObjectTypeWithInterfaces; registration is rejected if the implementation is not closed under the ancestors of the implemented interfaces. A new test module,Arcadia.Ring1.Tests.InterfaceTypeTests, covers the type relations, operation dispatch, dispatch inheritance under override, and the closure requirement. -
The documentation of
Arcadia_Object,Arcadia_ByteArray,Arcadia_ByteArrayBuilder,Arcadia_String, andArcadia_StringBuilderhas moved from Arcadia Ring 2 to Arcadia Ring 1, where these types are defined.
2026-03-30
Arcadia Ring 1 and Arcadia Ring 2 provide now a consistent pattern for reading Bytes (Arcadia.ByteReader) and converting them to Unicode code points (Arcadia.UnicodeCodePointReader).
2026-03-07
- Arcadia Engine.Visuals and Arcadia Engine.Audials were merged into Arcadia Engine. This change reflects the fact that more sophisticated engine components, such as user interfaces, typically integrate both visual and auditory elements.
- Pixel buffers, pixel formats, and pixel-buffer operations, together with sample buffers, sample formats, and sample-buffer operations, have been consolidated into Arcadia Media. This library is intended to subsume the majority of procedural media-processing functionality.
- Functionality related to image loading and saving has been isolated in the Arcadia PixelBufferIO library. The library provides cross-platform support for the BMP, ICO (both BMP-based and PNG-based variants), and PNG image formats.
- Arcadia ADL (Asset Description Language), which is currently undocumented, introduces support for declarative descriptions of:
- pixel buffers, including solid fills and checkerboard fills
- sample buffers, including sine-wave and white-noise generation
- textures, meshes, models
2025-12-24
Data Definition Language Schema specification was updated to version 0.2 This new version includes the Choice node: A DDLS choice nodes validates a DDL node against a list of DDLS nodes. If one DDLS node accepts, the DDLS choice node accepts. Otherwise the DDLS choice node rejects.
The prebuilt dependencies for Windows for Michael Heilmann's Arcadia have been updated. The following dependencies are now prebuilt:
- flac
- freetype
- libpng
- libressl
- ogg
- openal-soft
- opengl
- zlib
The binary archive is available as a release.
2025-12-07
Changes to sources of the website are now detected by all CMake backends like Visual Studio, GNU Make, etc.
2024-02-11
As the backing system for the website matures, we add more documentation items for the various libraries. As of today, over 250 procedures, objects, and enumeration were documented.
When visiting this website (or running the website locally on your machine for quickly referencing the documentation), then you want that website to respect your privacy. In particular, you do not want that website to give your PI to companies by requesting assets and libraries from their CDNs: Consequently, this webiste removed most external references for to assets and libraries it uses. The following references were removed:
- Removed references go Google's "static.google.com" for fonts. Fonts are hosted locally.
- Removed references to "polyfill.io" and "cdn.jsdelivr.net" for library loading. The "Polyfill" library was removed and the "MathJax" library is hosted locally.
Currently, only the CDN reference Mathjax remains, which will be adressed shortly.
2023-12-23
The website was updated. Find below a list of the most important changes.
- Fix navigational elements
- Improve site responsiveness in particular on mobile devices with small screens
- Improve layout of specifications
2023-10-23
- The website was updated.
- In particular, typography was improved.
- In the course of the next few weeks, the existing documentation that was created so far, will be migrated to this site.
2023-10-13
The website was created.