Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-pascal / 2026-06

[ANN] PasBuild v1.9.0 Release

1 message · 1 person ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Unknown author

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 -