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 -
_______________________________________________
fpc-pascal maillist  -  [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to