Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/ci-cell.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ jobs:
cpp-compiler: ${{ inputs.cpp-compiler }}
dependencies: >-
STLSoft
woad
${{ !inputs.no-shwild && 'shwild' || '' }}
xTests
${{ !inputs.no-b64 && 'b64' || '' }}
Expand Down
33 changes: 23 additions & 10 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -181,15 +181,16 @@ jobs:
mingw-w64-x86_64-cmake
mingw-w64-x86_64-make

# Runtime/public deps only (BUILD_TESTING=OFF): STLSoft then b64.
# Order is intentional (not lexicographic). When no_b64, omit b64.
# Runtime deps (BUILD_TESTING=OFF): STLSoft, optional b64, then woad.
# Order is dependency order, not lexicographic. Omit b64 when no_b64.
# woad is required for bec.AnsiConsole.
- name: Install Synesis dependencies
uses: ./.github/actions/install-sis-deps
with:
build-type: ${{ env.BUILD_TYPE }}
c-compiler: ${{ matrix.c_compiler }}
cpp-compiler: ${{ matrix.cpp_compiler }}
dependencies: ${{ matrix.no_b64 && 'STLSoft' || 'STLSoft b64' }}
dependencies: ${{ matrix.no_b64 && 'STLSoft woad' || 'STLSoft b64 woad' }}
toolchain: ${{ matrix.toolchain }}

- name: Configure
Expand Down Expand Up @@ -272,7 +273,8 @@ jobs:
cat > "$CONSUMER/CMakeLists.txt" <<'EOF'
cmake_minimum_required(VERSION 3.13)
project(pantheios_install_smoke CXX)
# STLSoft and b64 must come from pantheios-config.cmake's find_dependency().
# STLSoft, b64, and woad must come from pantheios-config.cmake's
# find_dependency().
find_package(Pantheios REQUIRED)
add_executable(consumer consumer.cpp)
# Link order matters for GNU ld (static archives are single-pass):
Expand Down Expand Up @@ -332,7 +334,16 @@ jobs:
- uses: actions/checkout@v4

# These routes consume STLSoft as a source tree, so it is cloned
# rather than built and installed.
# rather than built and installed. woad is still a CMake package:
# install it alone so CMAKE_PREFIX_PATH cannot satisfy STLSoft.
- name: Install woad
uses: ./.github/actions/install-sis-deps
with:
build-type: ${{ env.BUILD_TYPE }}
c-compiler: gcc
cpp-compiler: g++
dependencies: woad

- name: Clone STLSoft
shell: bash
run: |
Expand All @@ -345,11 +356,12 @@ jobs:
shell: bash
run: |
set -euo pipefail
# Deliberately no CMAKE_PREFIX_PATH: nothing here may fall back to
# the STLSoft package.
# Prefix holds woad only, so find_package(STLSoft) still cannot
# succeed on these routes.
if [ "${{ matrix.route }}" = "variable" ]; then
cmake -B build -S . \
-DCMAKE_BUILD_TYPE="${{ env.BUILD_TYPE }}" \
-DCMAKE_PREFIX_PATH="${{ env.SIS_DEPS }}" \
-DSTLSOFT="${STLSOFT_SRC}" \
-DNO_B64=ON \
-DBUILD_EXAMPLES=ON \
Expand All @@ -358,6 +370,7 @@ jobs:
else
STLSOFT="${STLSOFT_SRC}" cmake -B build -S . \
-DCMAKE_BUILD_TYPE="${{ env.BUILD_TYPE }}" \
-DCMAKE_PREFIX_PATH="${{ env.SIS_DEPS }}" \
-DNO_B64=ON \
-DBUILD_EXAMPLES=ON \
-DBUILD_TESTING=OFF \
Expand Down Expand Up @@ -421,8 +434,8 @@ jobs:
exit 1
fi

# Deliberately omit SIS_DEPS from CMAKE_PREFIX_PATH: the consumer must
# resolve cleanly using only the installed Pantheios prefix.
# The consumer needs the Pantheios prefix and the woad prefix. It must
# not be given a prefix that contains the STLSoft package.
- name: Configure and run install smoke consumer
shell: bash
run: |
Expand All @@ -449,6 +462,6 @@ jobs:
EOF
cmake -S "$CONSUMER" -B consumer-build \
-DCMAKE_BUILD_TYPE="${{ env.BUILD_TYPE }}" \
-DCMAKE_PREFIX_PATH="${INSTALL_PREFIX}"
-DCMAKE_PREFIX_PATH="${INSTALL_PREFIX};${{ env.SIS_DEPS }}"
cmake --build consumer-build --parallel
consumer-build/consumer
10 changes: 10 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
# Pantheios - Changes <!-- omit in toc -->


## 1.0.1-rc5 - 18th October 2026

* backends:
* **bec.AnsiConsole** colour handling now uses **woad**: severity colours are **woad** SGR sequences (`WOAD_BOLD` / `WOAD_BLINKING` where used, plus foreground and background), and emission follows `woad_seq_for_stream()` unless **`noColours`** or **`forceAnsiEscapeSequences`** overrides that policy;
* dependencies:
* **woad** is required, for ANSI colour in **bec.AnsiConsole** and in the stock back-end libraries that compile it;
* testing:
* **test.scratch.versions** colours the library name, version, and macro fields with **woad**, in the same roles as **WordLen**'s scratch versions printer;


## 1.0.1-rc4 - 14th October 2026

* util:
Expand Down
17 changes: 16 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# Purpose: Top-level CMake lists file for Pantheios
#
# Created: 29th March 2021
# Updated: 11th October 2026
# Updated: 12th October 2026
#
# ######################################################################## #

Expand Down Expand Up @@ -142,6 +142,8 @@ endif(PANTHEIOS_USE_WIDE_STRINGS)
#
# required:
# - STLSoft;
# - woad - ANSI colour for bec.AnsiConsole (and stock libraries that
# compile it);
# - xTests - required for testing only;
#
# optional:
Expand Down Expand Up @@ -204,6 +206,19 @@ if(DEFINED STLSOFT_INCLUDE_DIR)
endif()


# ############################
# woad
#
# Required by bec.AnsiConsole, and by the stock back-end libraries that
# compile that translation unit, for SGR sequences and stream policy.

find_package(woad REQUIRED)

message("-- CMake package woad found (version ${woad_VERSION})")

add_compile_definitions(HAS_woad)


# ############################
# ACE
#
Expand Down
8 changes: 4 additions & 4 deletions INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ There are three options for installing **Pantheios**, depending on how you obtai

### Cloning project, installing via CMake

0. First, ensure that [**STLSoft**](https://github.com/synesissoftware/STLSoft) (**1.11.1-rc8** or later) and, optionally, [**b64**](https://github.com/synesissoftware/b64) and [**shwild**](https://github.com/synesissoftware/shwild), have been cloned and then built and installed via CMake, as per the instructions in those projects. To build the stock **ACE** backends, install **ACE** (for example `libace-dev` on Ubuntu, or set **`ACE`** / **`ACE_ROOT`** to an ACE tree) before configuring; pass **`--no-ace`** to **prepare_cmake.sh** to skip **ACE** discovery.
0. First, ensure that [**STLSoft**](https://github.com/synesissoftware/STLSoft) (**1.11.1-rc8** or later) and [**woad**](https://github.com/synesissoftware/woad) have been cloned and then built and installed via CMake, as per the instructions in those projects. Optionally, install [**b64**](https://github.com/synesissoftware/b64) and [**shwild**](https://github.com/synesissoftware/shwild) the same way. To build the stock **ACE** backends, install **ACE** (for example `libace-dev` on Ubuntu, or set **`ACE`** / **`ACE_ROOT`** to an ACE tree) before configuring; pass **`--no-ace`** to **prepare_cmake.sh** to skip **ACE** discovery.


1. Clone **Pantheios** from GitHub, as in;
Expand Down Expand Up @@ -134,7 +134,7 @@ $ sudo cmake --install ${SIS_CMAKE_BUILD_DIR:-./_build} --config Release
1. Download the latest distributions;

Obtain the latest releases of **Pantheios** and **STLSoft** from:
* [Pantheios GitHub project](https://github.com/synesissoftware/Pantheios/tags), e.g. [**Pantheios-1.0.1-rc4.zip**](https://github.com/synesissoftware/Pantheios/archive/refs/tags/1.0.1-rc4.zip);
* [Pantheios GitHub project](https://github.com/synesissoftware/Pantheios/tags), e.g. [**Pantheios-1.0.1-rc5.zip**](https://github.com/synesissoftware/Pantheios/archive/refs/tags/1.0.1-rc5.zip);
* [STLSoft GitHub project](https://github.com/synesissoftware/STLSoft/tags), e.g. [**STLSoft-1.11.1-rc8**](https://github.com/synesissoftware/STLSoft/archive/refs/tags/STLSoft-1.11.1-rc8);


Expand All @@ -143,7 +143,7 @@ Obtain the latest releases of **Pantheios** and **STLSoft** from:
```bash
$ mkdir -p ~/open-source
$ cd ~/open-source
$ unzip Pantheios-1.0.1-rc4.zip
$ unzip Pantheios-1.0.1-rc5.zip
$ unzip STLSoft-1.11.1-rc8
```

Expand All @@ -152,7 +152,7 @@ $ unzip STLSoft-1.11.1-rc8
4. Select and change to the appropriate build subdirectory under your **Pantheios** directory, e.g. **build/gcc48.unix**, and then execute make

```bash
$ cd Pantheios-1.0.1-rc4
$ cd Pantheios-1.0.1-rc5
$ cd build/gcc48.unix
$ make
```
Expand Down
1 change: 1 addition & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

| Date | News Item | Details |
| ------------------- | ------------------------------------------------------------- | ---------- |
| 18th October 2026 | [Pantheios 1.0.1-rc5 released](https://github.com/synesissoftware/Pantheios/releases/tag/1.0.1-rc5) | |
| 14th October 2026 | [Pantheios 1.0.1-rc4 released](https://github.com/synesissoftware/Pantheios/releases/tag/1.0.1-rc4) | **bec.stock** / **WithCallback** (no **bec.test**); **example.cpp.linking.N_with_stock**; STLSoft util thinning (process id / **args** / **snprintf**); **Diagnosticism** version strings; Doxygen / **generate_doxygen.sh** / **doc/mainpage.md**; `PANTHEIOS_VER_1_0_1_RC4` |
| 12th October 2026 | [Pantheios 1.0.1-rc3 released](https://github.com/synesissoftware/Pantheios/releases/tag/1.0.1-rc3) | **bec.AnsiConsole** VT / default sink; optional **ACE**; **CMake** leaf helpers; entry/main + path canonicalisation; headless scratch **`--skip-interactive`**; `_RELSTATUS`; CI refactor; Phase **4c** **test.scratch.versions**; **STLSoft** **1.11.1-rc8** floor |
| 6th September 2026 | [Pantheios 1.0.1-rc2 released](https://github.com/synesissoftware/Pantheios/releases/tag/1.0.1-rc2) | transitive link dependencies in **pantheios-config.cmake**; added **.vscode/settings.json** |
Expand Down
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ Further reading: [http://pantheios.org/](http://pantheios.org/), [FAQ.md](./FAQ.

3. **It depends on other libraries, which are also open-source and free.**

**STLSoft** is required. **b64** is optional (for the `pantheios::b64` inserter). **Diagnosticism**, **shwild**, and **xTests** are used for testing. See [Dependencies](#dependencies).
**STLSoft** is required. **woad** is required for ANSI console colour. **b64** is optional (for the `pantheios::b64` inserter). **Diagnosticism**, **shwild**, and **xTests** are used for testing. See [Dependencies](#dependencies).

4. **It's designed for efficiency.**

Expand Down Expand Up @@ -191,6 +191,7 @@ Defect reports, feature requests, and pull requests are welcome on https://githu
| Dependency | Role | Required? |
| ---------- | ---- | --------- |
| [**STLSoft**](https://github.com/synesissoftware/STLSoft) **1.11.1-rc8** or later | Implementation and interface support | ✅ Always |
| [**woad**](https://github.com/synesissoftware/woad) | ANSI colour for **bec.AnsiConsole** | ✅ Always |
| [**b64**](https://github.com/synesissoftware/b64) | `pantheios::b64` inserter | ⚪ Optional (`PANTHEIOS_NO_B64` when absent) |
| [**Diagnosticism**](https://github.com/synesissoftware/Diagnosticism) | Version strings in scratch / examples | ⚪ Optional; tests / scratch only |
| [**shwild**](https://github.com/synesissoftware/shwild) | Pattern matching in tests | ⚪ Optional; tests only |
Expand All @@ -210,6 +211,7 @@ Projects closely related to **Pantheios** include:
* [**shwild**](https://github.com/synesissoftware/shwild) — used in testing;
* [**STLSoft**](https://github.com/synesissoftware/STLSoft) — required foundation;
* [**xTests**](https://github.com/synesissoftware/xTests) — used in testing;
* [**woad**](https://github.com/synesissoftware/woad) — ANSI colour for **bec.AnsiConsole**;


### License
Expand Down
4 changes: 2 additions & 2 deletions TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
## Functional improvements


### 1.0.1-rc5
### 1.0.1-rc5 (18th October 2026)

* [ ] **b64** link-time dependency broken;
* [ ] Integration of **woad** for coloured output;
* [x] ~~~Integration of **woad** for coloured output~~~ - ✅;
* [ ] Additional performance tests;
* [ ] Refactor CMake test targets / options so that only unit-test executables are built when only unit-tests are asked for;
* [ ] **README.md** (and other project markdown) significant enhancement (in a similar vein as has been done for **xqsr3** (Ruby));
Expand Down
18 changes: 14 additions & 4 deletions cmake/pantheios-config.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ include(CMakeFindDependencyMacro)
# cleanly the required imported target definitions while forwarding the
# calling project's QUIET and REQUIRED flags.
#
# Why these calls are strictly CONDITIONAL:
# Why STLSoft and b64 are strictly CONDITIONAL, and woad is not:
#
# 1. STLSoft (@STLSoft_FOUND@):
# Pantheios public headers and internals depend on STLSoft. When
Expand All @@ -55,9 +55,17 @@ include(CMakeFindDependencyMacro)
# systems where b64 is not installed, needlessly breaking downstream
# consumers.
#
# Guarding with @STLSoft_FOUND@ and @b64_FOUND@ ensures downstream discovery
# precisely mirrors the dependencies linked into the installed Pantheios
# binary.
# 3. woad:
# woad is required. bec.AnsiConsole, and the stock back-end libraries
# that compile that translation unit, link woad::woad. The exported
# targets file therefore names woad::woad, and every downstream
# consumer must locate woad — including a consumer that does not itself
# link an ANSI-console back-end, because CMake checks every target named
# by the export when the targets file is loaded.
#
# Guarding STLSoft and b64 with @STLSoft_FOUND@ and @b64_FOUND@, and always
# requiring woad, makes downstream discovery match the dependencies linked
# into the installed Pantheios binary.
# ##########################################################################

if(@STLSoft_FOUND@)
Expand All @@ -70,6 +78,8 @@ if(@b64_FOUND@)
find_dependency(b64)
endif()

find_dependency(woad)

include("${CMAKE_CURRENT_LIST_DIR}/@EXPORT_NAME@-targets.cmake")


Expand Down
11 changes: 6 additions & 5 deletions include/pantheios/backends/bec.AnsiConsole.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* Purpose: Declaration of the Pantheios AnsiConsole Stock Back-end API.
*
* Created: 20th October 2024
* Updated: 14th October 2026
* Updated: 18th October 2026
*
* Home: http://www.pantheios.org/
*
Expand Down Expand Up @@ -95,7 +95,8 @@

/** \def PANTHEIOS_BE_ANSICONSOLE_F_NO_COLOURS
* Causes the \ref group__backend__stock_backends__AnsiConsole to emit log
* statements without colouring based on severity.
* statements without colouring based on severity. This overrides woad's
* colour policy.
* \ingroup group__backend__stock_backends__AnsiConsole__flags
*/

Expand All @@ -106,9 +107,9 @@

/** \def PANTHEIOS_BE_ANSICONSOLE_F_FORCE_ANSI_ESCAPE_SEQUENCES
* Causes the \ref group__backend__stock_backends__AnsiConsole to write ANSI
* escape sequences regardless of the console/terminal mode, i.e. even if
* the output is being redirected. Ignored when
* PANTHEIOS_BE_ANSICONSOLE_F_NO_COLOURS is specified.
* escape sequences regardless of woad's colour policy, i.e. even if the
* output is being redirected or colour is inhibited in the environment.
* Ignored when PANTHEIOS_BE_ANSICONSOLE_F_NO_COLOURS is specified.
* \ingroup group__backend__stock_backends__AnsiConsole__flags
*/

Expand Down
5 changes: 3 additions & 2 deletions include/pantheios/pantheios.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* Purpose: Pantheios Core and Util APIs.
*
* Created: 21st June 2005
* Updated: 14th October 2026
* Updated: 18th October 2026
*
* Home: http://www.pantheios.org/
*
Expand Down Expand Up @@ -121,13 +121,14 @@
# define PANTHEIOS_VER_1_0_1_RC2 0x010001e2
# define PANTHEIOS_VER_1_0_1_RC3 0x010001E3
# define PANTHEIOS_VER_1_0_1_RC4 0x010001E4
# define PANTHEIOS_VER_1_0_1_RC5 0x010001E5
# define PANTHEIOS_VER_1_0_1 0x010001FF
#endif /* !PANTHEIOS_DOCUMENTATION_SKIP_SECTION */

#define PANTHEIOS_VER_MAJOR 1
#define PANTHEIOS_VER_MINOR 0
#define PANTHEIOS_VER_PATCH 1
#define PANTHEIOS_VER_RELSTATUS 0xE4
#define PANTHEIOS_VER_RELSTATUS 0xE5

#define PANTHEIOS_VER \
(0\
Expand Down
5 changes: 5 additions & 0 deletions projects/backends/bec.AnsiConsole.WithCallback/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@ add_library(Pantheios.bec.AnsiConsole.WithCallback

target_link_STLSoft(Pantheios.bec.AnsiConsole.WithCallback)

target_link_libraries(Pantheios.bec.AnsiConsole.WithCallback
PUBLIC
$<LINK_ONLY:woad::woad>
)

target_compile_options(Pantheios.bec.AnsiConsole.WithCallback
PRIVATE
$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>,$<CXX_COMPILER_ID:GNU>>:
Expand Down
5 changes: 5 additions & 0 deletions projects/backends/bec.AnsiConsole/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@ add_library(Pantheios.bec.AnsiConsole

target_link_STLSoft(Pantheios.bec.AnsiConsole)

target_link_libraries(Pantheios.bec.AnsiConsole
PUBLIC
$<LINK_ONLY:woad::woad>
)

list(APPEND X_GCC_CUSTOM_WARNINGS_TO_BE_SUPPRESSED unused-parameter)
define_target_compile_options(Pantheios.bec.AnsiConsole)

Expand Down
5 changes: 5 additions & 0 deletions projects/backends/bec.stock.WithCallback/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,11 @@ add_library(Pantheios.bec.stock.WithCallback

target_link_STLSoft(Pantheios.bec.stock.WithCallback)

target_link_libraries(Pantheios.bec.stock.WithCallback
PUBLIC
$<LINK_ONLY:woad::woad>
)

if(HAS_ACE)

target_link_ACE(Pantheios.bec.stock.WithCallback)
Expand Down
5 changes: 5 additions & 0 deletions projects/backends/bec.stock/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,11 @@ add_library(Pantheios.bec.stock

target_link_STLSoft(Pantheios.bec.stock)

target_link_libraries(Pantheios.bec.stock
PUBLIC
$<LINK_ONLY:woad::woad>
)

if(HAS_ACE)

target_link_ACE(Pantheios.bec.stock)
Expand Down
Loading
Loading