> > > I'm in the process of writing my own C compiler for educational purposes.
Then look also into https://frama-c.com/ and https://github.com/bstarynk/bismon and https://nwcc.sourceforge.net/ and https://bellard.org/tcc/ > To this end, I have decided to integrate into my compiler my own C++ port ( > https://github.com/johnythecarrot/mjolnir ) of the Rust crate Ariadne ( > https://github.com/zesterer/ariadne ) which provides nice, fancy and readable > diagnostics for use in compilers and the like. See the first link for an idea > of how my library outputs diagnostics. > > I had the idea of perhaps contributing this diagnostics system to GCC in one > way or another, under a flag perhaps, but considered it might be an unwelcome > addition. I was told that there's no harm in raising it with the GCC > developers. > > This message serves as a gauge of interest from the GCC developers for > something of this kind. I am aware the current format of my diagnostics do not > comply with the GNU Standards, and I'd therefore also like to politely ask for > input on your suggestions on making it comply while retaining its cleanliness. > > I am the sole developer of Mjolnir and can therefore relicense it as > necessary. Mjolnir still has a couple of issues to iron out and features to > implement, such as multi-line span displaying. As far as I understand, GCC code needs to be GPL licensed with a copyright assignment contract to the FSF. (See https://gcc.gnu.org/legacy-ml/gcc/2006-12/msg00008.html and https://arxiv.org/abs/1109.0779 ....) regarding your fancy diagnostic system, consider working at the GIMPLE level and implementing it (at first) as an open source GCC plugin. https://gcc.gnu.org/onlinedocs/gccint/GIMPLE.html https://gcc.gnu.org/onlinedocs/gccint/Plugins.html Be aware that GCC extensions (e.g. your open source plugin) will use GCC functions for diagnostics. By working on GIMPLE representation your code analyzer would be usable on most of the languages having a GCC frontend. You probably want to extend the existing GCC static analysis infrastructure: https://gcc.gnu.org/onlinedocs/gcc/Static-Analyzer-Options.html in relation with GCC link-time optimizations abilities. Regarding specifically C++ and its template machinery, you probably would have issues in analyzing C++ template code. As far as I understand this is an undecidable problem, so needs years of research (and could give you some PhD). A naïve insight would be, for improving C++ template diagnostics, to try to instanciate C++ template code (e.g. Boost libraries) with some guessed types. I have no idea of how to achieve this. Do you want to use machine learning techniques to improve your diagnostic tool mjolnir? Perhaps some code from https://github.com/RefPerSys/RefPerSys/ (a GPL licensed inference engine project) could be useful for your tool? Regards from near Paris in France -- Basile STARYNKEVITCH <bas...@starynkevitch.net> 8 rue de la Faïencerie 92340 Bourg-la-Reine, France http://starynkevitch.net/Basile & https://github.com/bstarynk