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).