cxgo
cxgo copied to clipboard
Tool for transpiling C to Go.
Go has more strict rules regarding what `goto` jumps are valid. `cxgo` currently doesn't reflow `goto` automatically. So "bad" `goto` will fail to compile in Go. There is a [workaround](https://github.com/gotranspile/cxgo/blob/main/docs/config.md#identsflatten)...
Currently `static` specifier is ignored, leading to incorrect code (variable is defined in the local scope, with the lifetime of a block). This is a serious issue and it must...
`cxgo` doesn't support thread local storage yet. We can emulate it by passing a `*TLS` object to all the functions that use it, and to all their callers, similar to...
C allows to take addresses of `goto` labels. `cxgo` doesn't yet support label variables, however it should be possible to emulate.
C supports `case` in weird places. They are basically `goto` labels, so they may be inside an `if` statement. We need to collect some real-world example for this. If it's...
Currently `cxgo` ignores `__attribute__((__packed__)) `. We should support it eventually, if we want to transpile anything that touches disk/network.
Currently `cxgo` cannot translate any comments. To make it work, we need some support from [cc](https://modernc.org/cc/v3) side.
Currently `cxgo` ignores information about bit sizes of fields. Should be supported at some point if we want to transpile ~anything that touches the disk/network.
Currently `auto` specifier is ignored. Should be fixed at some point.
Although it would be really awesome to have C++ support, we **don't** plan to support C++ yet. We do believe that full C support will eventually help us bootstrap C++...