All Versions
Latest Version
Avg Release Cycle
126 days
Latest Release
12 days ago

Changelog History
Page 1

  • v0.12.0

    October 30, 2019

    New laika-io Module, Full Referential Transparency, Integration with cats-effect

    🚀 This is a breaking release, for a full migration guide, see the Migration Guide

    • 🆕 New laika-io Module
      • Functionality extracted from existing laika-core module
      • Contains File/Stream IO, EPUB output, Parallel transformations
      • Based on cats-effect type classes (in "Bring-Your-Own-Effect" style)
      • Leaves laika-core pure, preparing it for later support for Scala.js
    • Referential Transparency
      • No method in the public API throws Exceptions anymore
      • The result of pure operations is provided by instances of Either
      • The result of side-effecting operations is provided by a return type of F[_],
        an effect type from cats-effect
      • Eliminated all uses of runtime reflection
    • 🔄 Changes to the APIs for creating and running parsers, renderers and transformers
      • Necessary due to the changes listed above
      • See the migration guide for details and examples
    • 🔄 Changes to the Directive Syntax in Templating
      • The syntax of separators for the attribute and body sections have changed
      • HOCON syntax is now used for attributes
      • The old syntax is still supported, but will be removed at some point before the 1.0 release
    • 🔄 Changes to the Directive DSL for creating directives
      • attribute(Default) is now defaultAttribute
      • body is now either parsedBody or rawBody
      • Type conversions happen with the new as method: attribute("title").as[String],
        based on the ConfigDecoder type class that is also used for the new Config API
      • Named body parts have been replaced by the more flexible Separator Directives
      • The built-in helper for mapping directive parts with different arity has
        been replaced by cats' mapN
    • ♻️ Refactoring of AST Rewrite API to be fully type-safe and avoid runtime reflection and exceptions.
      • Return types are now more explicit (e.g. Replace(newSpan) instead of Some(newSpan))
      • Rules for rewriting spans and blocks get registered separately for increased
        type-safety, as it is invalid to replace a span with a block element.
    • ♻️ Refactoring of the Render API to be referentially transparent
      • Also applies to the API for registering custom renderers for individual AST nodes
    • 🆕 New Config API and built-in HOCON parser
      • Removed the dependency on the Typesafe Config library and its impure Java API
      • Added a new lightweight and pure HOCON parser as part of laika-core,
        👌 supporting the full spec except for file includes (for now).
    • ✨ Enhancement for the DocumentTree API
      • The result of a tree parsing operation is now a new type called DocumentTreeRoot
      • It has a coverDocument property and contains the recursive tree structure of the parsed content.
      • Each DocumentTree in the structure now has an explicit titleDocument: Option[Document] property for more explicit content organization in e-books.
      • Properties that previously held references to streams and other impure data had been
        ✂ removed from the pure content model (e.g. DocumentTree.staticDocuments).
    • 🐛 Bug fixes for fenced code blocks with blank lines in GitHub-Flavored Markdown
    • Markdown: Properly render JavaScript in <script> tags in verbatim HTML
  • v0.11.0

    June 12, 2019

    Support for Output in the EPUB Format

    • 🆕 New Renderer for producing EPUB containers
    • 🆕 New laikaEPUB task in the sbt plugin
    • 🆕 New laikaIncludeEPUB setting for the laikaSite task
    • 👌 Support for cover images for EPUB and PDF
    • 👌 Support for document metadata (author, language, date, etc.) for EPUB and PDF
    • 👌 Support for title pages per chapter
    • ⚡️ Backwards-compatible to 0.9.0 and 0.10.0 - if you update from earlier versions, please see
      🚀 the release notes for 0.9.0 for migration
  • v0.10.0

    December 01, 2018

    Support for GitHub Flavored Markdown

    • 🆕 New Markdown parser extensions for GitHub Flavour:
      • Tables
      • Fenced Code Blocks
      • Auto-Links
      • Strikethrough
    • Preparing for Scala 2.13
      • Adjust use of Collection API for breaking changes and deprecations in 2.13
      • Replace use of parallel collections with custom executor
      • Release will follow once 2.13 is final
    • 🔧 Level of parallelism of transformations is now configurable
    • ⚡️ Fully backwards-compatible to 0.9.0 - if you update from an earlier version, please see
      🚀 the release notes for 0.9.0 for migration
  • v0.9.0

    September 15, 2018

    Introduction of the ExtensionBundle API

    • 🆕 New ExtensionBundle APIs allow to bundle extensions into a single object for easier reuse. Supported extension hooks include directives, markup parser extensions, rewrite rules, custom renderers, document type matchers, alternative parsers for stylesheets, templates or configuration headers and default templates per output format. For migrating from 0.8 extension hooks, see #56.
    • ⬇️ Reduced number of settings and tasks in the sbt plugin, by using the new ExtensionBundle API for sbt settings. The most common tasks and setting remain unchanged, for users of the lower level extension settings of the plugin see #65 for migration instructions.
    • 👌 Improved package structure to reduce number of required imports. For simpler use cases a global "organize imports" should suffice for migration, for all other cases see #66.
    • 🚀 The changes listed above fix some of the design issues of the very early releases from 2013/14 and bring the API closer to the 1.0 API. Upcoming releases are expected to have a much lower number of breaking changes, if any, as they are mostly feature additions.
  • v0.8.0

    June 04, 2018

    The Speed Release

    • 📜 Doubles parsing speed for both Markdown and reStructuredText
    • 📜 Much lower number of parser instance creations on repeated runs
    • 🐎 Performance goals had been achieved through replacing the former
      ⚡️ Scala SDK parser combinators with a custom, optimized combinator design:
      • Fewer dependent types and base parsers in objects instead of traits, making it easier to freely compose parsers
      • Create parser error messages lazily, as most of them will never be accessed
      • Avoid cost of by-name args in all cases except | combinator
    • 🚀 Other changes in this release:
      • Add support for size and align options for the image directive in reStructuredText
      • Fixes for all bugs known and reported to this point
      • Remove all deprecation warnings for Scala 2.12
  • v0.7.5

    December 30, 2017

    Support for sbt 1.0

    • 🔌 Laika's sbt plugin is now an AutoPlugin
    • 🛠 Prefixed all task and setting keys to adhere to recommended naming pattern
      (e.g. laikaGenerate)
    • Adjustments for API changes in sbt 1.0
    • 🐛 Bug fixes in the library
    • ⬇️ Drop support for sbt 0.13 and Scala 2.10

    🔌 The unusual version number reflects the fact that users of the sbt plugin need
    ⚡️ to update their build for the changes in the key names, while for users of
    🚀 the library this release is a drop-in replacement containing only bug fixes.

  • v0.7.0

    April 17, 2017

    Redesign of the Document API

    • 👌 Support for Scala 2.12 (with continued support for 2.11 and 2.10)
    • 🆕 New Document API: use case classes wherever possible,
      extract features into pluggable traits and introduce a new Cursor type for tree rewriting
    • 👍 Allow to customize the FopFactory for the PDF renderer (in API and sbt plugin)
    • 🛠 Fix an issue in the laika:site task in the sbt plugin that executed several sub-tasks
      twice which could lead to IllegalStateExceptions caused by the resulting race condition
    • 🛠 Fixes for the reStructuredText parser (for option lists and IP addresses)
  • v0.6.0

    May 23, 2016

    New renderer for PDF output

    • 👌 Support for rendering PDF documents
    • 👌 Support for rendering XSL-FO output
    • 🆕 New CSS parser supporting a large subset of standard CSS
    • 👌 Support styling of PDF documents with CSS
    • 👌 Support for different templates per output format
    • 🆕 New sbt tasks: html, pdf, xslfo, prettyPrint for rendering
      a single output format
    • 🆕 New sbt task generate for rendering multiple formats
      (e.g. laika:generate html pdf)
    • ↔ Integrate PDF output into existing sbt task laika:site via
      🆕 new setting includePDF
    • 🆕 New directives pageBreak, style and format
    • 🔄 Changes to the Render and Transform API to allow for the
      🔀 merging of an entire directory of input files into a single output
      file (as required by PDF rendering)
  • v0.5.1

    May 23, 2016
    • Cross-compile for Scala 2.11 and 2.10
    • 🔌 Publish the sbt plugin to the new plugin repository on Bintray
    • ⬆️ Upgrade to ScalaTest 2.2.4
  • v0.5.0

    May 23, 2016

    Introducing sbt Plugin

    • 🔌 New sbt plugin, exposing all Laika
      🔋 features and customization hooks as sbt tasks and settings
    • 🆕 New option to merge multiple input directories into a tree structure with a single root,
      👍 allowing to keep reusable styles or templates ("themes") separately
    • 🆕 New option to use Markdown and reStructuredText markup in the same input tree, including
      cross-linking between the two formats
    • 🏗 Move to a multi-project build and rename the main artifact from laika to laika-core
    • ⬆️ Upgrade to ScalaTest 2.0 and sbt 0.13
    • ⬇️ Drop support for Scala 2.9.x