Recent Releases of carbon
carbon - v0.15-alpha
Cool stuff has been cooked! ๐งโ๐ณ And more it'll come... ๐
PRs Merged
- Implement audio subsystem by @iWas-Coder in https://github.com/sparky-game/carbon/pull/51
Also, as always, we polished some code, fixed some bugs, documented some undocumented things... you know, usual stuff. ๐ธ
Full Changelog: https://github.com/sparky-game/carbon/compare/v0.14-alpha...v0.15-alpha
- C
Published by github-actions[bot] 10 months ago
carbon - v0.14-alpha
Key features ๐
- Full SKAP (Sparky Asset Pack) format support: A complete implementation of the SKAP format now enables reading and writing of assets and metadata.
- Keccakโ256 Hashing Algorithm: Weโve added our own Keccakโ256 implementation for signatures and integrity checks, accompanied by an official testโvector suite to ensure correctness.
- New C++ graphics abstractions:
cbn::DrawCanvas, a generic drawing layer for rectangles, lines and text;cbn::win::ForFrame<T>, a templated frame loop with precise time control; rectangle scaling with linear interpolation (lerp) and an integer modulus operator (imod) for smooth animations. - Optional generic type: Introduced
Opt<T>to handle values that may or may not be present, eliminating awkward nullptr or exception handling patterns.
Also, as always, we polished some code, fixed some bugs, documented some undocumented things... you know, usual stuff. ๐ธ
Full Changelog: https://github.com/sparky-game/carbon/compare/v0.13-alpha...v0.14-alpha
- C
Published by iWas-Coder 11 months ago
carbon - v0.13-alpha
In the printing functions and macros, we upgraded from a runtime ternary operation with type identification for mapping type and printf-style specifiers, to a fully compile-time procedure, using _Generic in C and templated and overloaded constexpr function in C++.
Improved and refined coroutines API; there's no longer the need to explicitly initialize and shutdown the feature! ๐
Simple example in C++:
cpp
carbon_println("[%zu] Hello, World!", carbon_coroutine_id());
carbon_coroutine_go([](void *){
carbon_println("[%zu] Hello, Async!", carbon_coroutine_id());
}, 0);
carbon_coroutine_yield();
Also, as always, we polished some code, fixed some bugs, documented some undocumented things... you know, usual stuff. ๐ธ
Full Changelog: https://github.com/sparky-game/carbon/compare/v0.12-alpha...v0.13-alpha
[!NOTE] carbon-0.13-alpha-macos-aarch64.tgz ::
659eb2b35ae979ca59a5f1d9561e020968f2b62a86e19312384615cbc55dcd52
- C
Published by iWas-Coder about 1 year ago
carbon - v0.12-alpha
We even can display graphics! ๐ธ
Polished also some code, and fixed some bugs... Documentation (in the header file itself) is also getting there ๐
Furthermore, now, on the prebuilt packages, we don't ship any implementation nor vendor source code whatsoever; all's included in the actual prebuilt static and dynamic library files. We've made sure all works fine in that scenario (obviously, without needing to define CARBON_IMPLEMENTATION macro, because we don't have any source code! Duh ๐).
Full Changelog: https://github.com/sparky-game/carbon/compare/v0.11-alpha...v0.12-alpha
[!NOTE] carbon-0.12-macos-aarch64.tgz ::
2f25f81d5631b39d70801cd840a64d50db4cfe430b281bc06b40db97d24a62f2
- C
Published by iWas-Coder about 1 year ago
carbon - v0.11-alpha
We're getting beefier, and that's great!
We highlight from this release the new coroutines API to do asynchronous work super easily in pure C. Try it out now! ๐
Full Changelog: https://github.com/sparky-game/carbon/compare/v0.10-alpha...v0.11-alpha
[!NOTE] carbon-0.11-macos-aarch64.tgz ::
bb5508e442030bc1d3022db063edbeb1aa0b9770949362a7ad324c49244167ba
- C
Published by iWas-Coder about 1 year ago
carbon - v0.10-alpha
C with string interpolation? ๐ค No more confusing format specifiers? No way! ๐ฎ Yeah, Carbon is that great ๐
c
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: https://github.com/sparky-game/carbon/compare/v0.9-alpha...v0.10-alpha
[!NOTE] carbon-0.10-linux-amd64.tgz ::
4f4021abf61bc41a82491b40f4118185a2766dd069f895742f8e0e7e8d2997d9carbon-0.10-macos-aarch64.tgz ::a8b6043a1d03da75af1b40941945f0cb8233db2c41e6e21816d94767bd12bdf1
- C
Published by iWas-Coder over 1 year ago
carbon - v0.9-alpha
:rocket: The stdlib of the future!
- Improved math module with more from-scratch functions implemented.
- Created both
StrBuilderandStrViewstructures to better create, manage and use strings. - Included
stb_image.hheader-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
foreachconstructs for containers such asListorStrList, 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: https://github.com/sparky-game/carbon/compare/v0.8-alpha...v0.9-alpha
[!NOTE] carbon-0.9-linux-amd64.tgz ::
e13d1bf3f41282a0a0a4483acf48ad7e573997c2a58553f31880f8fafaeecea1carbon-0.9-macos-amd64.tgz ::a511b9cc7836627411fa0323ca46b4af03b22113d1829f430ae353a34307b812
- C
Published by iWas-Coder over 1 year ago
carbon - 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: https://github.com/sparky-game/carbon/compare/v0.7-alpha...v0.8-alpha
[!NOTE] carbon-0.8-linux-amd64.tgz ::
e0d04712480e4e4fa9376f9ad06395f8fc1cac5c5c1103da9860199771cd2441
- C
Published by iWas-Coder over 1 year ago
carbon - v0.7-alpha
Now it can rebuild itself! :tada:
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
*.cfile (translation units), it won't pick it up, you'll need to recompile manually the binary adding the new file to it.
Full Changelog: https://github.com/sparky-game/carbon/compare/v0.6-alpha...v0.7-alpha
- C
Published by iWas-Coder over 1 year ago
carbon - v0.6-alpha
Implemented test discovery functionality! :tada:
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_namerefers to the context/module/class of the codebase the new test case belongs to.unit_namerefers to the actual name of the test case itself.
Full Changelog: https://github.com/sparky-game/carbon/compare/v0.5-alpha...v0.6-alpha
- C
Published by iWas-Coder over 1 year ago
carbon - 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: https://github.com/sparky-game/carbon/compare/v0.4-alpha...v0.5-alpha
- C
Published by iWas-Coder over 1 year ago
carbon - v0.4-alpha
- If
carbon.hgets 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_OKandCARBON_KOmacros to denote test status.
Full Changelog: https://github.com/sparky-game/carbon/compare/v0.3-alpha...v0.4-alpha
- C
Published by iWas-Coder almost 2 years ago
carbon - v0.3-alpha
- Execution results now get outputted to a JUnit XML file (
carbon_results.xml).
Full Changelog: https://github.com/sparky-game/carbon/compare/v0.2-alpha...v0.3-alpha
- C
Published by iWas-Coder almost 2 years ago
carbon - v0.2-alpha
- More colorful output (green and red).
- Total execution time reported in microseconds if it took < 1s.
Full Changelog: https://github.com/sparky-game/carbon/compare/v0.1-alpha...v0.2-alpha
- C
Published by iWas-Coder almost 2 years ago
carbon - v0.1-alpha
BSD Carbon :: 'First 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!
- C
Published by iWas-Coder about 2 years ago