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 :: 4f4021abf61bc41a82491b40f4118185a2766dd069f895742f8e0e7e8d2997d9 carbon-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 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: https://github.com/sparky-game/carbon/compare/v0.8-alpha...v0.9-alpha

[!NOTE] carbon-0.9-linux-amd64.tgz :: e13d1bf3f41282a0a0a4483acf48ad7e573997c2a58553f31880f8fafaeecea1 carbon-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 *.c file (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_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: 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 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: 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.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: 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