Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project
adheres to Semantic Versioning.
Added
New libraries
vm
library for the virtual machine implementation
parsing
library for parser combinators
Changed
Build system
- Upgrade the C++ version to C++20
test
library features
- Print a special message when there are no tests in a test suite
Deprecated
Removed
Fixed
Build system
- Give a nice message from CMake instead of weird errors when trying to build for non-64-bit systems
Security
Released on September 04, 2021.
Added
New libraries
core
library for fundamental types and functions used by everything else
test
library for testing infrastructure
unix
library for wrapping Unix-like APIs
windows
library for wrapping Windows APIs
core
library features
core::constant_error
namespace, containing a ConstantError
template for errors with a constant message
core::error_chain
namespace, containing the ErrorChain
class for building complex error types
core::none
namespace, containing the None
type to use as a placeholder
core::resource_warden
namespace, containing a class template for cleaning up raw resources on scope exit
core::result
namespace, containing facilities for operations that can fail
test
library features
test::abstract_reporter
namespace, containing the AbstractReporter
interface
test::cli
namespace, containing a function execute()
that can be called from main()
test::console_reporter
namespace, containing a reporter that writes to stdout
test::expect
namespace, containing macros to express test assertions
test::outcome
namespace, containing types representing scenario outcomes
test::reporter
namespace, containing factories for specific reporters and also a wrapper type
test::scenario
namespace, containing the Scenario
type for representing a single test scenario
test::suite
namespace, containing the Suite
singleton used to hold all of the tests in a suite
unix
library features
unix::errno_error
namespace, containing utilities for working with errno
unix::fs
namespace, containing wrappers for filesystem APIs on Unix-like systems
windows
library features
windows::fs
namespace, containing wrappers for filesystem APIs on Windows
windows::transcoding
namespace, containing functions for transcoding UTF8 with UTF16 for Windows APIs
windows::windows_error
namespace, containing functions and a type for reading and formatting Windows errors
Build system features
AddCrucibleExecutable
module, which provides a wrapper for add_executable()
AddCrucibleLibrary
module, which provides a wrapper for add_library()
AddCrucibleTest
module, which provides a wrapper for add_test()
EnableCompilerWarnings
module, which provides a function that enables common compiler warning flags
EnableRuntimeSanitizers
module, which provides a function that enables ASAN, TSAN, and UBSAN based on options
- Write all final build outputs (executables and libraries) to
${PROJECT_BINARY_DIR}/artifacts
- Automatically export all symbols from all libraries when building Windows DLLs
Repository features
- Build dependencies in the README
- Build instructions in the README
- Test instructions in the README
- Attribution in the README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project
adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
#### New libraries
* `vm` library for the virtual machine implementation
* `parsing` library for parser combinators
### Changed
#### Build system
* Upgrade the C++ version to C++20
#### `test` library features
* Print a special message when there are no tests in a test suite
### Deprecated
### Removed
### Fixed
#### Build system
* Give a nice message from CMake instead of weird errors when trying to build for non-64-bit systems
### Security
## [0.1.0]
Released on September 04, 2021.
### Added
#### New libraries
* `core` library for fundamental types and functions used by everything else
* `test` library for testing infrastructure
* `unix` library for wrapping Unix-like APIs
* `windows` library for wrapping Windows APIs
#### `core` library features
* `core::constant_error` namespace, containing a `ConstantError` template for errors with a constant message
* `core::error_chain` namespace, containing the `ErrorChain` class for building complex error types
* `core::none` namespace, containing the `None` type to use as a placeholder
* `core::resource_warden` namespace, containing a class template for cleaning up raw resources on scope exit
* `core::result` namespace, containing facilities for operations that can fail
#### `test` library features
* `test::abstract_reporter` namespace, containing the `AbstractReporter` interface
* `test::cli` namespace, containing a function `execute()` that can be called from `main()`
* `test::console_reporter` namespace, containing a reporter that writes to stdout
* `test::expect` namespace, containing macros to express test assertions
* `test::outcome` namespace, containing types representing scenario outcomes
* `test::reporter` namespace, containing factories for specific reporters and also a wrapper type
* `test::scenario` namespace, containing the `Scenario` type for representing a single test scenario
* `test::suite` namespace, containing the `Suite` singleton used to hold all of the tests in a suite
#### `unix` library features
* `unix::errno_error` namespace, containing utilities for working with `errno`
* `unix::fs` namespace, containing wrappers for filesystem APIs on Unix-like systems
#### `windows` library features
* `windows::fs` namespace, containing wrappers for filesystem APIs on Windows
* `windows::transcoding` namespace, containing functions for transcoding UTF8 with UTF16 for Windows APIs
* `windows::windows_error` namespace, containing functions and a type for reading and formatting Windows errors
#### Build system features
* `AddCrucibleExecutable` module, which provides a wrapper for `add_executable()`
* `AddCrucibleLibrary` module, which provides a wrapper for `add_library()`
* `AddCrucibleTest` module, which provides a wrapper for `add_test()`
* `EnableCompilerWarnings` module, which provides a function that enables common compiler warning flags
* `EnableRuntimeSanitizers` module, which provides a function that enables ASAN, TSAN, and UBSAN based on options
* Write all final build outputs (executables and libraries) to `${PROJECT_BINARY_DIR}/artifacts`
* Automatically export all symbols from all libraries when building Windows DLLs
#### Repository features
* Build dependencies in the README
* Build instructions in the README
* Test instructions in the README
* Attribution in the README
[Unreleased]: https://gitlab.com/bravelytyped/crucible
[0.1.0]: https://gitlab.com/bravelytyped/crucible/-/tree/v0.1.0