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
vm
library for the virtual machine implementation
Changed
- Print a special message when there are no tests in a test suite
Deprecated
Removed
Fixed
Security
0.1.0 - 2021-09-04
Added
core
library for fundamental types and functions used by everything else
test
library for testing infrastructure
core::result
namespace, containing facilities for operations that can fail
test::outcome
namespace, containing types representing scenario outcomes
EXPECT
family of macros, used to express test conditions
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
test::cli
namespace, containing a function execute()
that can be called from main()
test::abstract_reporter
namespace, containing the AbstractReporter
interface
test::console_reporter
namespace, containing a reporter that writes to stdout
test::reporter
namespace, containing factories for specific reporters and also a wrapper type
core::error_chain
namespace, containing the ErrorChain
class for building complex error types
unix
library for wrapping Unix-like APIs
core::none
namespace, containing the None
type to use as a placeholder
unix::errors
namespace, containing error types for the unix
library
unix::fs
namespace, containing wrappers for filesystem APIs on Unix-like systems
windows
library for wrapping Windows APIs
windows::transcoding
namespace, containing functions for transcoding UTF8 with UTF16 for Windows APIs
core::constant_error
namespace, containing a ConstantError
template for errors with a constant message
windows::windows_error
namespace, containing functions and a type for reading and formatting Windows errors
windows::fs
namespace, containing wrappers for filesystem APIs on Windows
core::resource_warden
namespace, containing a class template for cleaning up raw resources on scope exit
- Turned on common compile warnings for AppleClang, Clang, GNU, and MSVC compilers for every target
- Wrappers for CMake's
add_*
commands that also turn on Crucible-specific compiler settings
- Options to enable AddressSanitizer, ThreadSanitizer, and UndefinedBehaviorSanitizer on supported toolchains
- Automatically export all symbols from all libraries when building Windows DLLs
Changed
- Reduced all
ErrorChain
and Result
instances in unix::errors
to one of each
- Moved Unix FS errors next to the functions that return them
- Refactored as many error types as possible to use
ConstantError
- Refactored all
ErrorChain
usages to be subtypes instead of aliases
- Changed
windows::transcoding
errors to be WindowsError
s
- Changed all custom resource manager classes to
ResourceWarden
instances
- Build dependencies, build instructions, test instructions, and attribution in the README
- All build outputs now go to
${PROJECT_BINARY_DIR}/artifacts
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
# 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
* `vm` library for the virtual machine implementation
### Changed
* Print a special message when there are no tests in a test suite
### Deprecated
### Removed
### Fixed
### Security
## [0.1.0] - 2021-09-04
### Added
* `core` library for fundamental types and functions used by everything else
* `test` library for testing infrastructure
* `core::result` namespace, containing facilities for operations that can fail
* `test::outcome` namespace, containing types representing scenario outcomes
* `EXPECT` family of macros, used to express test conditions
* `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
* `test::cli` namespace, containing a function `execute()` that can be called from `main()`
* `test::abstract_reporter` namespace, containing the `AbstractReporter` interface
* `test::console_reporter` namespace, containing a reporter that writes to stdout
* `test::reporter` namespace, containing factories for specific reporters and also a wrapper type
* `core::error_chain` namespace, containing the `ErrorChain` class for building complex error types
* `unix` library for wrapping Unix-like APIs
* `core::none` namespace, containing the `None` type to use as a placeholder
* `unix::errors` namespace, containing error types for the `unix` library
* `unix::fs` namespace, containing wrappers for filesystem APIs on Unix-like systems
* `windows` library for wrapping Windows APIs
* `windows::transcoding` namespace, containing functions for transcoding UTF8 with UTF16 for Windows APIs
* `core::constant_error` namespace, containing a `ConstantError` template for errors with a constant message
* `windows::windows_error` namespace, containing functions and a type for reading and formatting Windows errors
* `windows::fs` namespace, containing wrappers for filesystem APIs on Windows
* `core::resource_warden` namespace, containing a class template for cleaning up raw resources on scope exit
* Turned on common compile warnings for AppleClang, Clang, GNU, and MSVC compilers for every target
* Wrappers for CMake's `add_*` commands that also turn on Crucible-specific compiler settings
* Options to enable AddressSanitizer, ThreadSanitizer, and UndefinedBehaviorSanitizer on supported toolchains
* Automatically export all symbols from all libraries when building Windows DLLs
### Changed
* Reduced all `ErrorChain` and `Result` instances in `unix::errors` to one of each
* Moved Unix FS errors next to the functions that return them
* Refactored as many error types as possible to use `ConstantError`
* Refactored all `ErrorChain` usages to be subtypes instead of aliases
* Changed `windows::transcoding` errors to be `WindowsError`s
* Changed all custom resource manager classes to `ResourceWarden` instances
* Build dependencies, build instructions, test instructions, and attribution in the README
* All build outputs now go to `${PROJECT_BINARY_DIR}/artifacts`
[Unreleased]: https://gitlab.com/bravelytyped/crucible
[0.1.0]: https://gitlab.com/bravelytyped/crucible/-/tree/v0.1.0