zt-bcc: Maintained BCC fork - v0.10.0 alpha 5
zt-bcc: Maintained BCC fork - v0.10.0 alpha 5
zt-bcc (Zeta Group BCC) is a continuation of Positron's BCC with bugfixes and some new features, along with proper SLADE support.
It's an alternative ACS code compiler for ports supporting ZDoom ACS, featuring many extensions over vanilla ACS, but still keeping almost 100% compatibility with it, to make projects easy to port over and take advantage of all the new features.
Some of the features over regular ACS include:
*Structures
*Enumerations
*Namespaces
*Preprocessor
*Strong types
*References to objects and functions
*Block scoping
*Optional function parameters
*Logical-AND (&&) and Logical-OR (||) are short-circuited
*foreach loop
*Nested functions
*Message-building blocks, for more dynamic prints and text formatting
zt-bcc now has libbcs, a standard library of it's own. This currently provides malloc/realloc/free, dynamic array functions, C-style printf functions, and a whole associative array/map template.
If you find any bugs, please post about them here or on the Github repository for the project.
Check the project wiki for documentation on zt-bcc's features and usage.
Download: https://github.com/zeta-group/zt-bcc/re ... .0-alpha.5
Source code: https://github.com/zeta-group/zt-bcc
It's an alternative ACS code compiler for ports supporting ZDoom ACS, featuring many extensions over vanilla ACS, but still keeping almost 100% compatibility with it, to make projects easy to port over and take advantage of all the new features.
Some of the features over regular ACS include:
*Structures
*Enumerations
*Namespaces
*Preprocessor
*Strong types
*References to objects and functions
*Block scoping
*Optional function parameters
*Logical-AND (&&) and Logical-OR (||) are short-circuited
*foreach loop
*Nested functions
*Message-building blocks, for more dynamic prints and text formatting
zt-bcc now has libbcs, a standard library of it's own. This currently provides malloc/realloc/free, dynamic array functions, C-style printf functions, and a whole associative array/map template.
If you find any bugs, please post about them here or on the Github repository for the project.
Check the project wiki for documentation on zt-bcc's features and usage.
Download: https://github.com/zeta-group/zt-bcc/re ... .0-alpha.5
Source code: https://github.com/zeta-group/zt-bcc
Last edited by TDRR on Sun Mar 09, 2025 1:14 am, edited 7 times in total.
One thing I have asked from the Lord, that I shall seek: That I may dwell in the house of the Lord all the days of my life, to behold the beauty of the Lord and to meditate in His temple. (Psalm 27:4, NASB)
My Discord tag is @tdrr, and it's my preferred contact method. I also check PMs here from time to time.
I also have a Discord server for my projects.
My Discord tag is @tdrr, and it's my preferred contact method. I also check PMs here from time to time.
I also have a Discord server for my projects.
Re: bcc-slade: BCC but for SLADE (04/09/21, more stable version)
Updated. Now the version used as a base is 0.8.0 instead of commit d58b44d, which was unstable, had no documented changes on the wiki, and as a result of that some things that were fine in 0.8.0 would result in deprecation warnings. Hopefully this change will provide more ease of use and stability.
One thing I have asked from the Lord, that I shall seek: That I may dwell in the house of the Lord all the days of my life, to behold the beauty of the Lord and to meditate in His temple. (Psalm 27:4, NASB)
My Discord tag is @tdrr, and it's my preferred contact method. I also check PMs here from time to time.
I also have a Discord server for my projects.
My Discord tag is @tdrr, and it's my preferred contact method. I also check PMs here from time to time.
I also have a Discord server for my projects.
Re: zt-bcc: Maintained BCC fork - v0.9.0
Updated once more. This is zt-bcc, a fork of BCC, that supersedes BCC-SLADE since it accomplishes the same purpose better, and then does some more.
Changes compared to BCC 0.8.0:
*Added #pragma raw define on/off, which allows enabling/disabling C-like preprocessor macros.
*Added #pragma raw include on/off, which allows enabling/disabling preprocessor include (can appear at almost any point in the file).
*Preprocessor directives are now case insensitive like the rest of the language.
*Fixed broken runtime assert message (was supposed to be tinted red originally, but the code for it was buggy).
*zt-bcc can now be used with SLADE to compile BCS code. Doom Builders should work too, but currently untested.
*Removed ACS/ACS95 compilation modes. If needed, BCC 0.8 or ACC can still be used for this purpose.
*zcommon.bcs should be up to date with all new Zandronum, GZDoom and K8Vavoom functions.
Source changes:
*Removed all non-standard functions (hopefully).
*Fixed all warnings, at least when compiling under MSYS2 with MinGW.
Changes compared to BCC 0.8.0:
*Added #pragma raw define on/off, which allows enabling/disabling C-like preprocessor macros.
*Added #pragma raw include on/off, which allows enabling/disabling preprocessor include (can appear at almost any point in the file).
*Preprocessor directives are now case insensitive like the rest of the language.
*Fixed broken runtime assert message (was supposed to be tinted red originally, but the code for it was buggy).
*zt-bcc can now be used with SLADE to compile BCS code. Doom Builders should work too, but currently untested.
*Removed ACS/ACS95 compilation modes. If needed, BCC 0.8 or ACC can still be used for this purpose.
*zcommon.bcs should be up to date with all new Zandronum, GZDoom and K8Vavoom functions.
Source changes:
*Removed all non-standard functions (hopefully).
*Fixed all warnings, at least when compiling under MSYS2 with MinGW.
One thing I have asked from the Lord, that I shall seek: That I may dwell in the house of the Lord all the days of my life, to behold the beauty of the Lord and to meditate in His temple. (Psalm 27:4, NASB)
My Discord tag is @tdrr, and it's my preferred contact method. I also check PMs here from time to time.
I also have a Discord server for my projects.
My Discord tag is @tdrr, and it's my preferred contact method. I also check PMs here from time to time.
I also have a Discord server for my projects.
Re: zt-bcc: Maintained BCC fork - v0.10.0 alpha 1
An alpha release. I still intend to do more with this before a full release, but here's a preview of the changes so far.
Changelog:
-Added libbcs.bcs. Currently provides malloc/realloc/free, dynamic array and C-style printf functions.
-Added zcommon.acs, which simply imports zcommon.bcs.
-Nullable array/struct references can now be cast to/from int, allowing some rudimentary pointer arithmetic.
-"::" is now the namespace separator. [Positron, for BCC]
-Added "lengthof()" operator. [Positron, for BCC]
-Deprecated ".length()" array/string member functions. [Positron, for BCC]
-Deprecated "." as namespace separator. [Positron, for BCC]
-"lengthof()" can take in structure references now.
-Diagnostic messages are now written to stderr instead of stdout.
Changelog:
-Added libbcs.bcs. Currently provides malloc/realloc/free, dynamic array and C-style printf functions.
-Added zcommon.acs, which simply imports zcommon.bcs.
-Nullable array/struct references can now be cast to/from int, allowing some rudimentary pointer arithmetic.
-"::" is now the namespace separator. [Positron, for BCC]
-Added "lengthof()" operator. [Positron, for BCC]
-Deprecated ".length()" array/string member functions. [Positron, for BCC]
-Deprecated "." as namespace separator. [Positron, for BCC]
-"lengthof()" can take in structure references now.
-Diagnostic messages are now written to stderr instead of stdout.
One thing I have asked from the Lord, that I shall seek: That I may dwell in the house of the Lord all the days of my life, to behold the beauty of the Lord and to meditate in His temple. (Psalm 27:4, NASB)
My Discord tag is @tdrr, and it's my preferred contact method. I also check PMs here from time to time.
I also have a Discord server for my projects.
My Discord tag is @tdrr, and it's my preferred contact method. I also check PMs here from time to time.
I also have a Discord server for my projects.
Re: zt-bcc: Maintained BCC fork - v0.10.0 alpha 2
Another alpha release. This has a very big focus on references/pointers and brings zt-bcc more up to par with GDCC in that aspect, including great benefits like using world/global arrays for dynamic memory allocation, interoperability with modules using pointers written with GDCC and more flexibility improvements like that.
-Added pointer types, same syntax as references but using `*` instead of `&`/`?`.
-Added support for references/pointers into world/global arrays. Example: (`int[] world:10* test;`)
-Added `void` array nullable reference/pointer type. This type can be implicitly converted to any other reference/pointer type.
-Added `internal` keyword to replace current `private`.
-Added `PTR_SPC` macro to libbcs. When defined before including libbcs, it's pointers and functions will use the world/global array specified. Example: (`#define PTR_SPC global:42`).
-Added `alloca` to libbcs, which will automatically free the memory after one tic.
-libbcs `malloc` will now return `0` when appropriate.
-libbcs memory allocation will now display an error when out of memory.
-libbcs local heap size is 4x bigger by default (65536 words).
-libbcs errors/warnings are now colored.
-Deprecated `private` keyword for object visibility (except when applied to namespaces).
-Added pointer types, same syntax as references but using `*` instead of `&`/`?`.
-Added support for references/pointers into world/global arrays. Example: (`int[] world:10* test;`)
-Added `void` array nullable reference/pointer type. This type can be implicitly converted to any other reference/pointer type.
-Added `internal` keyword to replace current `private`.
-Added `PTR_SPC` macro to libbcs. When defined before including libbcs, it's pointers and functions will use the world/global array specified. Example: (`#define PTR_SPC global:42`).
-Added `alloca` to libbcs, which will automatically free the memory after one tic.
-libbcs `malloc` will now return `0` when appropriate.
-libbcs memory allocation will now display an error when out of memory.
-libbcs local heap size is 4x bigger by default (65536 words).
-libbcs errors/warnings are now colored.
-Deprecated `private` keyword for object visibility (except when applied to namespaces).
One thing I have asked from the Lord, that I shall seek: That I may dwell in the house of the Lord all the days of my life, to behold the beauty of the Lord and to meditate in His temple. (Psalm 27:4, NASB)
My Discord tag is @tdrr, and it's my preferred contact method. I also check PMs here from time to time.
I also have a Discord server for my projects.
My Discord tag is @tdrr, and it's my preferred contact method. I also check PMs here from time to time.
I also have a Discord server for my projects.
Re: zt-bcc: Maintained BCC fork - v0.10.0 alpha 3
A quick fix release. Better late than never.
Fixed broken module-scope struct/array reference type checking (Basically, & references were completely unusable unless they pointed to world/global space, as the equality check would always fail).
Fixed broken module-scope struct/array reference type checking (Basically, & references were completely unusable unless they pointed to world/global space, as the equality check would always fail).
One thing I have asked from the Lord, that I shall seek: That I may dwell in the house of the Lord all the days of my life, to behold the beauty of the Lord and to meditate in His temple. (Psalm 27:4, NASB)
My Discord tag is @tdrr, and it's my preferred contact method. I also check PMs here from time to time.
I also have a Discord server for my projects.
My Discord tag is @tdrr, and it's my preferred contact method. I also check PMs here from time to time.
I also have a Discord server for my projects.
Re: zt-bcc: Maintained BCC fork - v0.10.0 alpha 4
Another release dedicated primarily to fixes, but there's also a new feature. Sorry for the rather unstable code I churned out earlier.
-Added #pragma pointer_space. Allows defining a default address space for pointers/references (ex: #pragma pointer_space global 10).
-Removed PTR_SPC define from libbcs.
-Fix question mark property not being initialized in some cases (resulted in random errors involving nullable reference type checks).
-Fix broken array type reference check (would cause perfectly matching reference types to error out, and the inverse).
-Fix void array references not being implicitly converted to structure references.
Internal changes:
-Remove unused member in ref_struct.
I also didn't forget to update the internal version string this time, so "zt-bcc -version" will properly output "0.10.0-alpha-4". Yay.
The wiki received some clean up and updates as well, and so did README.md. They should be up to date with current zt-bcc, so I recommend checking them out if you're interested.
https://github.com/zeta-group/zt-bcc/wiki
-Added #pragma pointer_space. Allows defining a default address space for pointers/references (ex: #pragma pointer_space global 10).
-Removed PTR_SPC define from libbcs.
-Fix question mark property not being initialized in some cases (resulted in random errors involving nullable reference type checks).
-Fix broken array type reference check (would cause perfectly matching reference types to error out, and the inverse).
-Fix void array references not being implicitly converted to structure references.
Internal changes:
-Remove unused member in ref_struct.
I also didn't forget to update the internal version string this time, so "zt-bcc -version" will properly output "0.10.0-alpha-4". Yay.
The wiki received some clean up and updates as well, and so did README.md. They should be up to date with current zt-bcc, so I recommend checking them out if you're interested.
https://github.com/zeta-group/zt-bcc/wiki
One thing I have asked from the Lord, that I shall seek: That I may dwell in the house of the Lord all the days of my life, to behold the beauty of the Lord and to meditate in His temple. (Psalm 27:4, NASB)
My Discord tag is @tdrr, and it's my preferred contact method. I also check PMs here from time to time.
I also have a Discord server for my projects.
My Discord tag is @tdrr, and it's my preferred contact method. I also check PMs here from time to time.
I also have a Discord server for my projects.
Re: zt-bcc: Maintained BCC fork - v0.10.0 alpha 5
More than just fixes, we finally have some more new features, and even better... zcommon.bcs is up to date with current Zandronum 3.2! I hope you all enjoy and get some good use out of it.
* Updated zcommon.bcs to the latest Zandronum 3.2 functions and definitions.
* Added `module` as one of the address spaces you can specify for pointers, which is normally the default without `#pragma pointer_space`.
* Added `memcmp` to libbcs, works much like C `memcmp.` Useful for raw structure/array comparisons.
* Inlined and optimized all code for the printf-like functions in libbcs, should be faster now.
* libbcs map template definition now takes a compare function for keys. Current options are `LIBBCS_SIMPLE_CMP` and `LIBBCS_STRING_CMP`.
* Numerous fixes to the map template in libbcs, should work reliably now.
* Inline ASM lines must now end in semicolons rather than line breaks.
* Non-private reference initialization warning should only occur for module references now.
* Fixed code for accessing world/global references instead generating instructions for accessing module storage in some cases.
* Fixed reference type checking. Again.
* Updated zcommon.bcs to the latest Zandronum 3.2 functions and definitions.
* Added `module` as one of the address spaces you can specify for pointers, which is normally the default without `#pragma pointer_space`.
* Added `memcmp` to libbcs, works much like C `memcmp.` Useful for raw structure/array comparisons.
* Inlined and optimized all code for the printf-like functions in libbcs, should be faster now.
* libbcs map template definition now takes a compare function for keys. Current options are `LIBBCS_SIMPLE_CMP` and `LIBBCS_STRING_CMP`.
* Numerous fixes to the map template in libbcs, should work reliably now.
* Inline ASM lines must now end in semicolons rather than line breaks.
* Non-private reference initialization warning should only occur for module references now.
* Fixed code for accessing world/global references instead generating instructions for accessing module storage in some cases.
* Fixed reference type checking. Again.
One thing I have asked from the Lord, that I shall seek: That I may dwell in the house of the Lord all the days of my life, to behold the beauty of the Lord and to meditate in His temple. (Psalm 27:4, NASB)
My Discord tag is @tdrr, and it's my preferred contact method. I also check PMs here from time to time.
I also have a Discord server for my projects.
My Discord tag is @tdrr, and it's my preferred contact method. I also check PMs here from time to time.
I also have a Discord server for my projects.