Cesium
Cesium copied to clipboard
C compiler for the CLI platform
After #551, I've found the following example of broken behavior: ``` int main(void) { struct foo { int x; } bar; bar.x = 42; // Type Cesium.CodeGen.Ir.Types.StructType was not found....
## The Problem Real-world Cesium users will inevitably encounter a range of problems involving interop with native code. 1. They might want to convert their existing programs to Cesium file...
In #354, we've introduced `FuncPtr` interop: C code may call .NET Core and pass function pointers in the positions when `FuncPtr` is expected. Currently, we are limited to 16 parameters...
Currently, our preprocessor only generates text output without the mapping of the code to the original source code. This blocks us from implementing proper error reporting at further compilation stages....
The section **6.10 Preprocessing directives** of the C standard defines the requirements to the C preprocessor. We should fulfill them. ## TODO - [ ] #525 - [x] #538 -...
I think that it would be fun to have `long long` of size 128 bit. .NET 7 includes `System.Int128`. Let's consider making `long long` as `Int128` on .NET 7? Perhaps...
See the section **6.10.4.1 Argument substitution** of the C standard on notes about the `__VA_ARGS__` substitution. See `TODO[#542]` in the code to see where the work may be needed.
Besides `__VA_ARGS__`, one of the recent C standards also introduced `__VA_OPT__`. Cesium should support that, of course.
See https://github.com/cplusplus/papers/issues/700 TL;DR: It allows to include any external binary data into your executable. see also @ThePhD 's blog posts about this: https://thephd.dev/embed-the-details ; https://thephd.dev/finally-embed-in-c23 and their test library for...
There's a problem: if we compile to `AnyCPU`, then we cannot generally determine `sizeof(void*)`, which has to be a constant expression, according to the standard. Same about, say, `size_t` or...