Deutsch English Français Italiano |
<vquhsa$385dj$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: bart <bc@freeuk.com> Newsgroups: comp.lang.c Subject: Re: Motivation of tccc mainatainers (Was: Python recompile) Date: Thu, 13 Mar 2025 12:08:42 +0000 Organization: A noiseless patient Spider Lines: 48 Message-ID: <vquhsa$385dj$1@dont-email.me> References: <vq1qas$j22$1@gallifrey.nk.ca> <vq6j5h$1qosf$1@dont-email.me> <20250304092827.708@kylheku.com> <vq7g1p$1vmg5$1@dont-email.me> <vq94dt$2boso$1@dont-email.me> <vqcsk7$23bfo$1@paganini.bofh.team> <vqefn1$3flpt$1@dont-email.me> <vqeu5c$3imil$1@dont-email.me> <vqeun4$3iqbq$1@dont-email.me> <vqfcbe$3lkkc$1@dont-email.me> <871pv861ht.fsf@nosuchdomain.example.com> <20250308192940.00001351@yahoo.com> <vqi1ge$8jg8$1@dont-email.me> <vqmgjv$3a2il$1@paganini.bofh.team> <vqn4dn$1eb9s$1@dont-email.me> <vqo3ss$3hkas$1@paganini.bofh.team> <vqph2e$203bs$2@dont-email.me> <vqpjh7$210q9$1@dont-email.me> <vqpo1s$222s0$1@dont-email.me> <vqpqo6$23197$1@dont-email.me> <vqpsvc$23gc1$1@dont-email.me> <20250311201757.000045e2@yahoo.com> <vqqaf0$267fp$2@dont-email.me> <20250312005843.00003584@yahoo.com> <vqqlc6$28fls$6@dont-email.me> <20250312105319.0000070b@yahoo.com> <vqs48v$2kqma$1@dont-email.me> <vqtgc9$2u4jc$3@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Thu, 13 Mar 2025 13:08:43 +0100 (CET) Injection-Info: dont-email.me; posting-host="25cbbeb4bbe2842d721a996a5b1ab770"; logging-data="3413427"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX187f1CLmC8q/WxHIktpvnOX" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:fMHWJ/KgixEO00B3o1YYXpgds2w= In-Reply-To: <vqtgc9$2u4jc$3@dont-email.me> Content-Language: en-GB On 13/03/2025 02:36, Lawrence D'Oliveiro wrote: > On Wed, 12 Mar 2025 14:04:16 +0000, bart wrote: > >> Another backend possibility is LLVM, but is vastly more complex, and >> just as slow. > > There are lighter-weight alternatives <https://c9x.me/compile/>. I found it limiting: * It only works on Linux * The input (intermediate language or IL) has to be textual SSA format * The output is AT&T assembly... * ...which has to be assembled with 'as'... * ...which has to be linked with 'ld' * Input and output files need to be piped (?) When I tested it on bigger inputs (my whole-program tools would produce larg monolithic files) it also got quite slow. If you compare with my own backend, if built into a standalone program: * It is 40% the size of QBE (for a version targetting Win64 ABI) * The input is simpler stack-based code with no SSA requirements * The input can be either textual IL or via an API * It can directly create binary executables with no external tools * It can translate large inputs at millions of intructions per second * It can optionally directly /execute/ programs in memory * It can optionally /interpret/ the IL Normally it's directly incorporated into my two main compilers and is used via it's API. So lightweight, small-footprint alternatives are quite viable. Mine is a personal product, but if comparing instead to Tiny C: * It can be smaller than QBE for an MVP (tcc.exe + headers + lib, but when I tried it as backend, no headers were needed) * The input is standard C code that everyone knows * The output, like mine, is an executable binary * It can process input at up to 1M lines per second * It can also run the input directly in memory The only downside is its poorer code (mine is somewhat better than tcc's and seems to match QBE on the few benchmarks I tried).