No description
Find a file
Steven Le Rouzic 5ab874b780
All checks were successful
Publish package to Bazel registry / publish-package (push) Successful in 10s
Release 0.6.0
2025-10-02 22:31:31 +02:00
.forgejo/workflows Add release workflow 2025-09-03 00:11:08 +02:00
bazel/clang_toolchain C++ toolchain: copy dynamic libs to binary directory 2025-09-20 00:58:36 +02:00
src/asl Remake the base module to follow std a bit more closely 2025-09-20 00:46:56 +02:00
tools Add readme 2025-10-02 00:06:49 +02:00
vendor Import cc rules from @rules_cc everywhere 2025-09-06 00:11:44 +02:00
.bazelrc Implement Bazel Clang toolchain 2025-07-13 18:11:21 +02:00
.clang-tidy Remake the base module to follow std a bit more closely 2025-09-20 00:46:56 +02:00
.clangd Remake the base module to follow std a bit more closely 2025-09-20 00:46:56 +02:00
.gitignore Fix include paths on Linux 2025-02-12 00:38:38 +01:00
asl.todo.txt C++ toolchain: copy dynamic libs to binary directory 2025-09-20 00:58:36 +02:00
BUILD.bazel Implement Bazel Clang toolchain 2025-07-13 18:11:21 +02:00
LICENSE.txt Add BSD-3 license 2025-03-01 00:50:25 +01:00
MODULE.bazel Release 0.6.0 2025-10-02 22:31:31 +02:00
MODULE.bazel.lock Release 0.6.0 2025-10-02 22:31:31 +02:00
README.md Add more stuff to the readme 2025-10-02 22:25:27 +02:00

asl

asl is a collection of libraries built as an alternative to the C++ standard library suited to our needs. It has not been thoroughly tested in production and thus we discourage anyone from using it, although feel free to read the code and have fun with it.

asl in parts reproduces the standard C++ library, and in other parts diverges from it and even adds higher level features such as logging and testing.

Overview

  • Built with C++ 23. We do not care about backwards compatibility. We intend on progressively adopting newer, carefully selected C++ features as they become available, and modernizing older implementations where it makes sense.
  • Written with compile-time and runtime performance in mind. Although we don't go as hardcore as other codebases, we strive to keep implementations simple and performant, mainly by avoiding performance pessimization.
  • Designed for Clang only. Supporting multiple compilers would be nice, but the uneven rate of adoption of C++ features makes this annoying. Anyway we don't need it, so we don't do it.
  • Leveraging Bazel. Although fairly complex, Bazel has proven to be a reliable tool for building cross-platform and multi-language codebases. These libraries can be easily integrated in other codebases through Bzlmod and our private registry.
  • Currently this codebase is developed and tested on Windows x64, Linux x64, and Linux arm64.

Code structure & features

  • allocator
    • Memory allocator concept, utilities, and a base implementation.
  • base
    • std replacement, metaprogramming utilities, language support, etc.
  • containers
    • Containers and data structures.
  • formatting
    • String formatting.
  • handle_pool
    • Unique, generation-counted handles generators, and associated object pools.
  • hashing
    • Hashing framework.
  • io
    • Library for console & file IO.
  • logging
    • A simple logging library.
  • strings
    • String buffers, string views, and numbers parsing.
  • synchronization
    • Atomic, mutexes, and other synchronization primitives.
  • testing
    • A simple testing library.
  • tests
    • Testing utilities, mainly for internal use.
  • types
    • A bunch of non-container types, such as option, status, function, etc.

License

asl is licensed under the 3-clause BSD License. See LICENSE.txt for more information.