The future of Clang-based tooling

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • cakeml

    CakeML: A Verified Implementation of ML

  • > A single IR with multiple passes is a good way to build a compiler

    https://mlir.llvm.org/, which is using, is largely claiming the opposite. Most passes more naturally are not "a -> a", but "a -> b". data structures and data structures work hand in hand, it is very nice to produce "evidence" for what is done in the output data structure.

    This is why https://cakeml.org/, which "can't cheat" with partial functions, has so many IRs!

    Using just a single IR was historically done for cost-control, the idea being that having many IRs was a disaster in repetitive boilerplate. MLIR seeks to solve that exact problem!

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • ClangSharp

    Clang bindings for .NET written in C#

  • One of the most surprising things I learned about "clang" was how relatively poor the "libClang" capabilities are.

    I wanted to write a codegen tool that would auto-generate bindings for C++ code, and it turns out that "libTooling" is the only reasonable way to get access to the proper info you need from C++.

    Another alternative is "libClangSharp", from Tanner Gooding who works on C# at Microsoft.

    https://github.com/dotnet/ClangSharp

  • binder

    Binder, tool for automatic generation of Python bindings (by RosettaCommons)

  • Have you seen https://github.com/RosettaCommons/binder ?

    python aside, having gone down this rabbithole, and still not infrequently revisiting said rabbithole, I don't believe using *clang like this a winning strategy. Because of the number of corner cases there are in eg C++17, you will end reimplementing effectively all of the "middle-end" (the parts that lower to llvm) for your target language. At that point you're building bindings anymore but a whole-ass transpiler. Binder fails to be complete in the way.

    My current theory is to try "synthesize" bindings from the llvm ir (a much smaller representational surface). Problems abound here too (ABI).

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • CakeML: A formally verified implementation of ML

    1 project | news.ycombinator.com | 14 May 2024
  • CakeML – A Verified Implementation of ML

    1 project | news.ycombinator.com | 5 Jun 2023
  • Tools for Verifying a Language and its Semantics

    1 project | /r/ProgrammingLanguages | 2 Jan 2023
  • CakeML: A Verified Implementation of ML

    2 projects | /r/sml | 7 Mar 2022
  • VLISP: A Verified Implementation of Scheme [pdf]

    1 project | news.ycombinator.com | 29 Dec 2021