Solod – A Subset of Go That Translates to C

(github.com)

44 points | by TheWiggles 2 hours ago

7 comments

  • ridiculous_fish 7 minutes ago
    I was curious how defer is implemented. `defer` in Go is famously function-scoped, not lexically-scoped. This means that the number of actively-deferred statements is unbounded, which implies heap allocation.

    The answer is that Solod breaks with Go semantics here: it just makes defer block-scoped (and unavailable in for/if blocks, which I don't quite get).

    https://github.com/solod-dev/solod/blob/main/doc/spec.md#def...

  • Retr0id 1 hour ago
    I don't really "get" the sweet-spot being targeted here. You don't get channels, goroutines, or gc, so aside from syntax and spatial memory safety you're not really inheriting much from Go. There is also no pathway to integrate with existing Go libraries.

    Spatial memory safety is nice but it's the temporal safety that worries me most, in nontrivial C codebases.

    • tidwall 1 hour ago
      Looks to me like having the ability to write Go syntax and interop directly with C is the plus.
      • Retr0id 1 hour ago
        I do like Go's syntax but I can't help thinking the best language for C interop is C.
        • AdieuToLogic 57 minutes ago
          > I do like Go's syntax but I can't help thinking the best language for C interop is C.

          SWIG[0] is a viable option for incorporating C code as well.

          0 - https://swig.org/Doc4.4/Go.html#Go

          • stevekemp 14 minutes ago
            I love how SWIG is still around! I first used it about 30 years ago to integrate with Perl, then later with Java.
  • remywang 29 minutes ago
    Anton also wrote the fantastic codapi [1] for embedding executable code snippets with wasm

    [1]: https://codapi.org/

  • tidwall 1 hour ago
    "To keep things simple, there are no channels, goroutines, closures, or generics."

    I wonder if it could be integrated with https://github.com/tidwall/neco, which has Go-like coroutines, channels, and synchronization methods.

  • MYEUHD 1 hour ago
    Related and currently on the front page: https://news.ycombinator.com/item?id=47627595
  • Onavo 1 hour ago
    Does it work with the preprocessor?
  • MegagramEnjoyer 32 minutes ago
    This is a bit too barebones. At least bring goroutines dude