[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