After years of development, we are announcing that in the coming months, FBC will undergo significant changes to further its development. We have plans for both our current, "old" fbc and for a new fbc. We feel that such important changes should first be discussed with the community. Please give us your feedback, and remember, it's OSS; Everyone's opinion matters.
"Old" FBC - Current Compiler Goals:
Due to bottlenecks encountered in FreeBASIC's development, full implementation of FB's desired features is becoming increasingly difficult. Proper completion of FBC in its current form would require major rewrites and modifications of an already complex existing code base.
In light of this, it is unlikely that the current FBC will meet its goals of being a GCC frontend or even have a full functional C emitter. Instead, effort will be put forth in implementing features on the TODO list even if they can't all be done "properly". While platform portability, GCC optimizations and C++ lib compatibility is highly desired, the work needed to make FBC support these features is overwhelming.
To Summarize - Instead of waiting many months to morph FBC into what we need, we're going to try and get in features like Inheritance, Polymorphism, Templates, etc., even if the implementations aren't exactly "standard".
New FBC (FBC 0.3.0b - 1.0) Goals:
Once the original FBC has its remaining major features implemented, development will focus on rewriting FBC in GCC C++. From the beginning, the new FBC will be designed and built as a GCC frontend.
A new language specification will be used to aid FBC's development. This will make FBC easier to learn and maintain, and also let FBC become standardized. The compiler source will also be documented, using shorthand in code comments to reference sections of the FBC specification (which will be available online if possible). Using the shorthand requires little effort from the developers, while still providing insight on the compiler's internal workings.
Example Internal Documentation
Code: Select all
// SPEC::FBC_AST_VAROP::3.1
// SPEC::Section Title (Head)::Sub-Sections
if( fb_node.op == OP_ADD ){
// ...
}
Aside from the already stated goals, FBC will retain the goals that the original one eventually came to have. Now, however, with proper planning and development, the "behind the scenes" work will become much easier and overall, FB will become 10x better than it ever was.
Thank You,
FreeBASIC Development Team
Actually written by anonymous1337
Comments Appreciated