Echo Writes Code

CHANGELOG.md

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.

Unreleased

Added

Changed

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 WindowsErrors
  • 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