The goal of this project is to provide a native and compatible implementation of the AsciiDoc Language specification that can be run on the Java Virtual Machine (JVM).
This will allow languages such as Java, Kotlin, Groovy, Scala, and JRuby, that run on the JVM, to process AsciiDoc-based documentation as part of a build process or application.
Today these languages can process AsciiDoc using AsciidoctorJ. However, AsciidoctorJ relies on JRuby to wrap the Asciidoctor Ruby implementation with a Java API. We want to take this opportunity to not only create a compatible implementation, but one that is written directly in Java so it has a lighter footprint and improved performance.
Eclipse Austen provides a Java implementation of the AsciiDoc Language Specification.
A pure Java implementation could provide smaller binaries and faster startup times. Access to a detailed abstract syntax tree (AST) of a parsed document and source-maps for generated documents are enabling features for improving editors and IDEs, including auto-completion and syntax checking.
This implementation will not provide any additional features to the AsciiDoc Language that are not part of the AsciiDoc Language Specification. However, it will implement the Extension API and provide hooks for users to write extensions using the extension points named by the specification.
The architecture of this implementation will be documented in order to be easier to understand and maintain by developers of this implementation. This implementation will serve as a reference for developers in other languages. Documented design decisions will offer implementations in other languages a head start.
It aims to be a library with minimal dependencies. This lets it run in environments such as GraalVM and OSGi.
This implementation will be compatible with at least the following runtime environments:
-
OpenJDK 8 / 11
-
GraalVM
-
OSGi / p2
AsciiDoc is a comprehensive, semantic markup language for producing a variety of presentation-rich output formats from content encoded in a concise, human-readable, plain text format.
This implementation will include a set of APIs for transforming the encoded content, extending the syntax/grammar and processor lifecycle, and integrating with tools and publishing platforms.
The Eclipse Foundation’s values of open source, transparency, and vendor neutrality are of the utmost importance to AsciiDoc and its community.
In addition, this project is created under the top level AsciiDoc Language Specification project that is already part of the Eclipse Foundation.
None that we know of.
This project will follow the specification scheduling but we plan to focus first on the following set of “core” functionalities:
-
Minimal proof-of-concept to show
-
loading - parsing - AST - conversion to HTML (with an option to add more output formats)
-
Testing harness for TCK
-
-
Growing functionality in step with the AsciiDoc Specification
-
AsciidoctorJ API compatible implementation (to be discussed)
-
AsciidoctorJ API compatible Java extensions (to be discussed)
-
Adapter for Language Server Protocol (given demand/sponsors)
We will add any functionalities approved as part of the AsciiDoc Language Specification. We will also make sure that the implementation remains compatible with the ever-changing Java landscape (esp with respect to compatibility with newer Java language features).