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

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