{"id":148,"date":"2015-05-16T00:17:44","date_gmt":"2015-05-15T22:17:44","guid":{"rendered":"https:\/\/predaelli.wordpress.com\/?p=148"},"modified":"2015-05-16T00:17:44","modified_gmt":"2015-05-15T22:17:44","slug":"148","status":"publish","type":"post","link":"https:\/\/monodes.com\/predaelli\/2015\/05\/16\/148\/","title":{"rendered":""},"content":{"rendered":"<p>Ok, I feel stupid. I&#8217;m reading several weeks of unread mail discovering this one of 26th of march:<\/p>\n<blockquote><p>Hi Folks, I&#8217;m happy to announce CastXML, a successor to GCC-XML [1]. CastXML is hosted here: <a href=\"https:\/\/github.com\/CastXML\/CastXML#readme\">https:\/\/github.com\/CastXML\/CastXML#readme<\/a><\/p>\n<p>It is a tool based on LLVM\/Clang that generates the same XML output format as GCC-XML [2]. CastXML&#8217;s design offers some advantages over GCC-XML&#8217;s:<\/p>\n<ol>\n<li>LLVM\/Clang offers a true SDK for external tools, so CastXML does not need to maintain a fork. GCC-XML requires significant work to update its parser to a more recent GCC. CastXML can simply be built against a recent LLVM\/Clang.<\/li>\n<li>LLVM\/Clang natively supports parsing both GCC and Visual Studio system headers, so CastXML does not need to maintain a set of system header patches. GCC-XML must be updated with system header patches for each new version of compilers it supports. CastXML can simply parse the headers directly.<\/li>\n<li>CastXML will need little to no work to support newer GCC and Visual Studio versions as they are released. LLVM\/Clang maintainers already take care of this. Due to the above, CastXML supports recent versions of Visual Studio, while GCC-XML does not support VS 2010 or later.<\/li>\n<li>CastXML can parse in some language modes besides C++98, though since the output format currently matches GCC-XML, only C++98-compatible interface structures appear in the output. For discussion of CastXML please join the mailing list for that project rather than posting on this gccxml list. The CastXML mailing list is here: <a href=\"http:\/\/public.kitware.com\/mailman\/listinfo\/castxml\">http:\/\/public.kitware.com\/mailman\/listinfo\/castxml<\/a><\/li>\n<li>Thanks, -Brad<\/li>\n<\/ol>\n<p>[1] If anyone is interested in continuing to maintain gccxml please contact me off-list to volunteer.<\/p>\n<p>[2] The output format is intended to be close to gccxml&#8217;s format to make porting clients easy. There may be some differences where output constructs depend on internal compiler implementation details.<\/p><\/blockquote>\n<p>While I have promptly cloned their git repository I&#8217;m not sure I want to start using CastXML as I discovered the gcc-plugin packages which should allow to directly plug in into gcc.<\/p>\n<p>It may look somehow moreconvoluted. Indeed it may be actually more convoluted. In fact Gcc &#8220;stubbornly&#8221; refuses to be subdued into a library. It will call your code. According to the <a href=\"https:\/\/predaelli.wordpress.com\/2015\/05\/14\/137\/\">&#8220;Parsing C++ with GCC plugins&#8221; serie that I pointed out previously<\/a> it don&#8217;t look so frightening anymore, at least to me.<\/p>\n<p>Since my aim is to work on the GNU Eiffel compiler it is wise to use Gnu Compiler Collection<\/p>\n","protected":false},"excerpt":{"rendered":"<p class=\"excerpt\">Ok, I feel stupid. I&#8217;m reading several weeks of unread mail discovering this one of 26th of march: Hi Folks, I&#8217;m happy to announce CastXML, a successor to GCC-XML [1]. CastXML is hosted here: https:\/\/github.com\/CastXML\/CastXML#readme It is a tool based on LLVM\/Clang that generates the same XML output format as GCC-XML [2]. CastXML&#8217;s design offers&hellip;<\/p>\n<p class=\"more-link-p\"><a class=\"more-link\" href=\"https:\/\/monodes.com\/predaelli\/2015\/05\/16\/148\/\">Read more &rarr;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[6],"class_list":["post-148","post","type-post","status-publish","format-standard","hentry","category-senza-categoria","tag-gcc-xml"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/s6daft-148","jetpack-related-posts":[{"id":137,"url":"https:\/\/monodes.com\/predaelli\/2015\/05\/14\/137\/","url_meta":{"origin":148,"position":0},"title":"Time to dive into GCC:\u2026","author":"Paolo Redaelli","date":"2015-05-14","format":false,"excerpt":"Time to dive into GCC: [code lang=\"bash\"] git clone git:\/\/gcc.gnu.org\/git\/gcc.git [\/code] From https:\/\/gcc.gnu.org\/wiki\/GitMirror. And study Parsing C++ with GCC plugins, (Part 1 Part 2 and Part 3) together with GCC Internals Manual. \u00a0 Why? Because I used gccxml to build a wrapper generator for LibertyEiffel. Nowadays gccxml is not updated\u2026","rel":"","context":"In &quot;Senza categoria&quot;","block_context":{"text":"Senza categoria","link":"https:\/\/monodes.com\/predaelli\/category\/senza-categoria\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4639,"url":"https:\/\/monodes.com\/predaelli\/2018\/10\/13\/gcc-optimizing-everything\/","url_meta":{"origin":148,"position":1},"title":"GCC: Optimizing Everything","author":"Paolo Redaelli","date":"2018-10-13","format":"link","excerpt":"Software is useless if computers can't run it. Even the most talented developer is at the mercy of the compiler when it comes to run-time performance - if you don\u2019t have a reliable compiler toolchain you can\u2019t build anything serious. The GNU Compiler Collection (GCC) provides a robust, mature and\u2026","rel":"","context":"In &quot;Senza categoria&quot;","block_context":{"text":"Senza categoria","link":"https:\/\/monodes.com\/predaelli\/category\/senza-categoria\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":776,"url":"https:\/\/monodes.com\/predaelli\/2015\/11\/04\/gcc5-and-libertyeiffel\/","url_meta":{"origin":148,"position":2},"title":"GCC5 and LibertyEiffel","author":"Paolo Redaelli","date":"2015-11-04","format":false,"excerpt":"From: JIT-compilation using GCC 5 | Red Hat Developer Blog This post is about something more user-visible: as of GCC 5, GCC\u2019s code-generation backend can now be built as a shared library. ... The new library in GCC 5 is named libgccjit, since it can be used to implement Just-In-Time\u2026","rel":"","context":"In &quot;Senza categoria&quot;","block_context":{"text":"Senza categoria","link":"https:\/\/monodes.com\/predaelli\/category\/senza-categoria\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":7800,"url":"https:\/\/monodes.com\/predaelli\/2020\/12\/02\/qbe-vs-llvm\/","url_meta":{"origin":148,"position":3},"title":"QBE vs LLVM","author":"Paolo Redaelli","date":"2020-12-02","format":"link","excerpt":"Source: QBE vs LLVM Both QBE and LLVM are compiler backends using an SSA representation. This document will explain why LLVM does not make QBE a redundant project. Obviously, everything following is biased, because written by me.","rel":"","context":"In &quot;Software&quot;","block_context":{"text":"Software","link":"https:\/\/monodes.com\/predaelli\/category\/software\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":9166,"url":"https:\/\/monodes.com\/predaelli\/2022\/03\/20\/bootstrappable-builds-2\/","url_meta":{"origin":148,"position":4},"title":"Bootstrappable builds","author":"Paolo Redaelli","date":"2022-03-20","format":false,"excerpt":"Source: Bootstrappable builds Do you know how to make yoghurt? The first step is to add yoghurt to milk! How can you build a compiler like GCC? The first step is to get a compiler that can compile the compiler.","rel":"","context":"In &quot;Senza categoria&quot;","block_context":{"text":"Senza categoria","link":"https:\/\/monodes.com\/predaelli\/category\/senza-categoria\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":9756,"url":"https:\/\/monodes.com\/predaelli\/2022\/10\/20\/offensivo\/","url_meta":{"origin":148,"position":5},"title":"Offensivo","author":"Paolo Redaelli","date":"2022-10-20","format":false,"excerpt":"Ferrari hackerata, azienda smentisce violazione. Cos\u00ec esordisce It2go Milano ed in bella mostra mettono questa copertina piena di schermate di terminale, tra cui \u00e8 riconoscibilissimo htop in basso a destra oltre a tree, delle opzioni di gcc e dei comuni log di sistema. Francamente trovo questa associazione offensiva. \u00c8 come\u2026","rel":"","context":"In &quot;Mood&quot;","block_context":{"text":"Mood","link":"https:\/\/monodes.com\/predaelli\/category\/mood\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/148","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/comments?post=148"}],"version-history":[{"count":0,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/148\/revisions"}],"wp:attachment":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/media?parent=148"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/categories?post=148"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/tags?post=148"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}