Releases: sparky-game/carbon
v0.10-alpha
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
🚀 The stdlib of the future!
- Improved math module with more from-scratch functions implemented.
- Created both
StrBuilder
andStrView
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 asList
orStrList
, 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
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
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
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
- 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 ascarbon_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
- 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
andCARBON_KO
macros to denote test status.
Full Changelog: v0.3-alpha...v0.4-alpha
v0.3-alpha
- Execution results now get outputted to a JUnit XML file (
carbon_results.xml
).
Full Changelog: v0.2-alpha...v0.3-alpha
v0.2-alpha
- 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
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!