Skip to content

Releases: sparky-game/carbon

v0.10-alpha

18 Dec 14:24
v0.10-alpha
c16d513
Compare
Choose a tag to compare

C with string interpolation? 🤔 No more confusing format specifiers? No way! 😮
Yeah, Carbon is that great 🎉

const char *name = "Wasym";
const u8 age = 23;
carbon_println("My name is %$, and I am %$ years old", $(name), $(age));

As you saw, we're using these 2 new things:

  • %$ placeholder: in the same old printf-style, these automatically can infer the type of the variable, and use the appropriate formatting for it. Obviously, you can still use the specific format specifiers if you prefer to do so. 😉
  • $(...) boxing macro: these are used to wrap around the variables you want to print using the %$ placeholder. As C cannot do any reflection or compile-time type manipulation, we need to do the work at runtime with this handy-dandy macro. 😎

Warning

The $(...) boxing macro only works with lvalues, i.e. variables stored in a way where its address can be retrieved with the & operator.

Also, logging functions have been reorganized (carbon_log_info, carbon_log_warn, carbon_log_error), which uses our string interpolation mechanism under the hood.

Full Changelog: v0.9-alpha...v0.10-alpha

Note

carbon-0.10-linux-amd64.tgz :: 4f4021abf61bc41a82491b40f4118185a2766dd069f895742f8e0e7e8d2997d9
carbon-0.10-macos-aarch64.tgz :: a8b6043a1d03da75af1b40941945f0cb8233db2c41e6e21816d94767bd12bdf1

v0.9-alpha

25 Nov 21:57
v0.9-alpha
6b9b6c4
Compare
Choose a tag to compare

🚀 The stdlib of the future!

  • Improved math module with more from-scratch functions implemented.
  • Created both StrBuilder and StrView structures to better create, manage and use strings.
  • Included stb_image.h header-only external library to read images into a tensor structure (a list of matrices of pixels, one matrix per channel in the image, e.g. RGBA).
  • Added foreach constructs for containers such as List or StrList, to better simplify iterating on such data structures.
  • Changed license terms and conditions to a definitive setup: GNU AGPL-3.0-only + Carbon Runtime Library Exception (RLE). More information both in the README and in the website.

Full Changelog: v0.8-alpha...v0.9-alpha

Note

carbon-0.9-linux-amd64.tgz :: e13d1bf3f41282a0a0a4483acf48ad7e573997c2a58553f31880f8fafaeecea1
carbon-0.9-macos-amd64.tgz :: a511b9cc7836627411fa0323ca46b4af03b22113d1829f430ae353a34307b812

v0.8-alpha

10 Nov 14:49
v0.8-alpha
5db9c73
Compare
Choose a tag to compare

Carbon doesn't just help you test your code, it also offers a way to write full-fledged high level C!

These are all shipped modules:

  • Assert
  • Math
  • Crypto
  • Logging
  • Should
  • Time
  • Clock
  • Filesystem
  • List
  • HashMap
  • String
  • StrList
  • NeuralNet
  • TestManager
  • JUnit

Full Changelog: v0.7-alpha...v0.8-alpha

Note

carbon-0.8-linux-amd64.tgz :: e0d04712480e4e4fa9376f9ad06395f8fc1cac5c5c1103da9860199771cd2441

v0.7-alpha

26 Oct 14:44
v0.7-alpha
e2a1fd0
Compare
Choose a tag to compare

Now it can rebuild itself! 🎉

If one of the translation units compiled into the binary changes, upon execution it will rebuild itself and swap the program flow to the new code.

Warning

If you create a new *.c file (translation unit), it won't pick it up, you'll need to recompile manually the binary adding the new file to it.

Full Changelog: v0.6-alpha...v0.7-alpha

Note

carbon-0.7-linux-amd64.tgz :: cb5a18429ce1accfe3ec1a53cfeef3e87dd3bb945d4190d4cb77fa0f788a6ea6

v0.6-alpha

12 Oct 22:02
v0.6-alpha
27dfae9
Compare
Choose a tag to compare

Implemented test discovery functionality! 🎉

Carbon automatically discovers and registers your tests, eliminating the need to manually do all of that work. Now, the process of creation and auto-registration of a new test case is done with the CARBON_TEST(ctx_name, unit_name) macro.

  • ctx_name refers to the context/module/class of the codebase the new test case belongs to.
  • unit_name refers to the actual name of the test case itself.

Full Changelog: v0.5-alpha...v0.6-alpha

v0.5-alpha

30 Sep 12:40
v0.5-alpha
5bf681d
Compare
Choose a tag to compare
  • Added CLI argument parsing. First flag as of right now is -o/--output, which enables the user to change the output file for the JUnit XML results file (by default remains as carbon_results.xml).
  • Because the last point has been implemented, it has been added both a help/usage panel (-h/--help) and version information (-v/--version).

Full Changelog: v0.4-alpha...v0.5-alpha

v0.4-alpha

19 Jul 08:34
v0.4-alpha
8aad443
Compare
Choose a tag to compare
v0.4-alpha Pre-release
Pre-release
  • If carbon.h gets included into C++ source code, it disables name mangling for all of its symbols, as it's expected in C (i.e. extern "C").
  • Added several new assertions (for integer types): <, <=, >, >=.
  • Added CARBON_OK and CARBON_KO macros to denote test status.

Full Changelog: v0.3-alpha...v0.4-alpha

v0.3-alpha

15 Jun 22:08
v0.3-alpha
3561aad
Compare
Choose a tag to compare
v0.3-alpha Pre-release
Pre-release
  • Execution results now get outputted to a JUnit XML file (carbon_results.xml).

Full Changelog: v0.2-alpha...v0.3-alpha

v0.2-alpha

05 Jun 23:59
v0.2-alpha
56ce1c9
Compare
Choose a tag to compare
v0.2-alpha Pre-release
Pre-release
  • More colorful output (green and red).
  • Total execution time reported in microseconds if it took < 1s.

Full Changelog: v0.1-alpha...v0.2-alpha

v0.1-alpha

04 May 21:04
v0.1-alpha
6efa445
Compare
Choose a tag to compare
v0.1-alpha Pre-release
Pre-release

We're happy to to announce the first pre-release ever of the Carbon library!

Some of the core features of this 0.1-alpha version are:

  • Assertions (carbon_should_* statements) against basic data types (int, void *, char * and boolean statements).
  • Global and local test suite creation.
  • Sequential test execution.
  • Self-hosted testing library (is tested with itself).
  • Custom logging and stdout results output.
  • Suite total execution time reporting.

Note

Currently the library has pretty basic yet useful functionality. However, new releases will come with great features, such as JUnit XML results output, GitHub Actions integration and results summary formatting, etc. Stay tuned!