Cesium
Cesium copied to clipboard
C compiler for the CLI platform
We should fully implement the following section of the C standard: - [ ] 6.7 Declarations - [ ] 6.7.1 Storage-class specifiers - [ ] 6.7.2 Type specifiers - [x]...
At this point, Cesium aims to be fully C23-compliant. There's a long way ahead, though. Here, I'll enumerate the standard sections and show their current status. The current version of...
Section **6 Language** of the C standard includes a number of EBNF-like definitions Cesium should support. - [ ] 6 Language - [ ] 6.4 Lexical elements: #76 - [...
Currently, we're using a C lexer from [Yoakke](https://github.com/LanguageDev/Yoakke), a wonderful language toolkit. Though, it's not currently known how good the lexer is regarding the actual standard. We should write tests...
Wide architecture set in Cesium supports same type sizes and layouts for any hardware platforms. The only problem remaining is that it's not the same for `nint` / `nuint`: these...
In #354, interop with `CPtr` / `VoidPtr` / `FuncPtr` has been added. C programs may pass pointer parameters to the places where these types are excepted. Reverse interop (when external...
#356 introduced mapping of function pointer types to `FuncPtr`. Currently, there's no mapping for functions with empty parens or functions with vararg parameters. We should support that. While implementing, see...
In tests, we have a class `CSharpCompilationUtil` that is used to compile C# code. Currently, it is a static class with a bunch of functions. The tests are expected to...
After implementing #354, we now have a feature that calls C# functions with `CPtr`, `VoidPtr`, and `FuncPtr` in their signatures. To call them, it will always emit a `conv.i` instruction....
The current form of `Cesium.CodeGen.Contexts.Meta.FunctionInfo` is confusing: it is an immutable record struct, but with several mutable fields. Let's make it fully immutable. While we are at it, remove `TODO[#489]`...