[fpc-pascal] [ANN] PasBuild v1.9.0 Release

mailinglists at geldenhuys.co.uk mailinglists at geldenhuys.co.uk
Mon Jun 15 20:10:11 CEST 2026


Hi everyone,

PasBuild v1.9.0 has been released.

PasBuild is a Maven-inspired build automation tool for Pascal
projects. It provides convention-based project structure,
dependency management, multi-module builds, resource filtering,
and packaging.

Homepage:
   https://github.com/graemeg/pasbuild
   (binaries available under the Releases link)

Quick Start Guide:
   
https://github.com/graemeg/PasBuild/blob/master/docs/quick-start-guide.adoc


Overview For This Release
-------------------------

PasBuild v1.9.0 is a significant step towards compiler
independence. The compiler invocation is now abstracted behind
a backend hierarchy, adding support for the Blaise compiler
alongside FPC. This release also introduces coloured console
output, compiler-agnostic build-date filtering tokens, and
library bootstrap controls. Several bug fixes address compiler
path handling, multi-module unit paths, and the test command.


New Features
------------

Compiler Backend Abstraction (FPC and Blaise)

   PasBuild is no longer coupled to FPC's command-line flags.
   A TCompilerBackend hierarchy encapsulates each compiler's
   flag vocabulary, and the backend is auto-detected from the
   configured compiler executable. Two backends ship in this
   release:

     - FPC    — Free Pascal Compiler (-Fu, -FE, -Fi, etc.)
     - Blaise — the Blaise compiler (--unit-path, --output, etc.)

   The --fpc option and PASBUILD_FPC environment variable are
   now deprecated in favour of --compiler and PASBUILD_COMPILER.
   The deprecated aliases continue to work and emit a
   deprecation warning.


Coloured Console Output

   Console output now uses colour to distinguish informational,
   warning, and error messages, improving readability of build
   logs. Colour codes are suppressed automatically when output
   is not a terminal (for example, when captured by a parent
   process), so log files remain clean.

   Contributed by Andrew Haines.


Build-Date Filtering Tokens

   Variable filtering is extended with three build-time tokens,
   resolved at process-resources time in ISO-8601 format,
   independent of the compiler:

     ${build.date}       — yyyy-mm-dd
     ${build.time}       — hh:mm:ss
     ${build.timestamp}  — yyyy-mm-ddThh:mm:ss

   This replaces the locale-dependent {$I %DATE%} compiler macro,
   giving a guaranteed ISO-8601 build date regardless of which
   Pascal compiler builds the project.


Library Bootstrap Exclusions

   Library modules can now list unit names to omit from the
   auto-generated bootstrap uses clause via a <bootstrapExclude>
   block in project.xml:

     <build>
       <packaging>library</packaging>
       <bootstrapExclude>
         <unit>System</unit>
       </bootstrapExclude>
     </build>

   This is needed for units compiled by a non-FPC compiler (for
   example, the Blaise compiler's own System.pas) — FPC already
   provides System implicitly, so including it in the bootstrap
   would cause a "Duplicate identifier" error. Excluded names are
   matched case-insensitively.


Bug Fixes
---------

Compiler Path Expanded Before Changing Directory

   A relative compiler path was being resolved after PasBuild
   changed into the project directory, causing the compiler to
   not be found. The compiler path is now expanded up front,
   before any directory change.


Blaise Long Options Forwarded From <compilerOptions>

   The Blaise backend previously swallowed every project.xml
   <compilerOptions> entry, so module configs could not steer
   the Blaise compiler. Long options (those prefixed with '--',
   such as '--backend native') are now forwarded verbatim.
   Single-dash options remain FPC-specific profile flags and
   stay suppressed for Blaise builds.


Test Command Restores Source Directory and Unit Paths

   The test command now restores the main source directory and
   builds the configured unitPaths into the test command,
   fixing test compilation in projects that rely on additional
   unit search paths.


Changes
-------

Default License for INIT Command

   The 'pasbuild init' scaffolder now defaults to BSD-3-Clause
   rather than MIT when prompting for a project license.

Compiler Log Renamed

   The per-goal compiler log is now named compiler.log rather
   than fpc.log, reflecting the compiler-agnostic backend.

Documentation

   The quick-start guide has been updated to document the
   compiler backend abstraction, the --compiler option, the
   build-date filtering tokens, and library bootstrap
   exclusions.


Test Suite
----------

   Test count: 232 (up from 219 in v1.8.0)


PasBuild is free software released under the BSD-3-Clause
license.


Regards,
   - Graeme -


More information about the fpc-pascal mailing list