Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connections
Warning: mysqli::query(): Couldn't fetch mysqli in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\index.php on line 66
Article <vqpetc$203bs$1@dont-email.me>
Deutsch   English   Français   Italiano  
<vqpetc$203bs$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: bart <bc@freeuk.com>
Newsgroups: comp.lang.c
Subject: Re: Python recompile
Date: Tue, 11 Mar 2025 13:47:25 +0000
Organization: A noiseless patient Spider
Lines: 86
Message-ID: <vqpetc$203bs$1@dont-email.me>
References: <vq1qas$j22$1@gallifrey.nk.ca> <vq4hf2$1brf7$1@dont-email.me>
 <vq4l3d$1ck9e$1@dont-email.me> <vq4m0u$1ctpn$1@dont-email.me>
 <vq4n05$1d5dv$1@dont-email.me> <vq4om7$1dbo2$2@dont-email.me>
 <vq6dqh$1pskk$1@dont-email.me> <vq6f8p$1pmnk$1@dont-email.me>
 <vq6gqc$1qcp8$1@dont-email.me> <vq6ips$1pmnk$2@dont-email.me>
 <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> <vqh569$3e9d$1@dont-email.me>
 <vqhj2e$5u26$1@dont-email.me> <vqhp18$75es$1@dont-email.me>
 <vqhs8o$7o8n$1@dont-email.me> <vqjkj0$l82b$1@dont-email.me>
 <20250309114336.00006b0a@yahoo.com> <vqk0ro$nebg$1@dont-email.me>
 <vql2m6$uei7$4@dont-email.me> <vql6g9$v4bj$1@dont-email.me>
 <vqo1p4$1kln1$3@dont-email.me> <vqp7ln$1udrm$2@dont-email.me>
 <20250311135928.00002098@yahoo.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Tue, 11 Mar 2025 14:47:25 +0100 (CET)
Injection-Info: dont-email.me; posting-host="e0b1512e31c88b1cbe05a7f62cb3028b";
	logging-data="2100604"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1+7kLyBEK8uZQUs23iHBkD4"
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:V1bnX4mm4dsnDJ/Y3CyU739R57Y=
Content-Language: en-GB
In-Reply-To: <20250311135928.00002098@yahoo.com>
Bytes: 4969

On 11/03/2025 11:59, Michael S wrote:
> On Tue, 11 Mar 2025 11:43:50 +0000

>> Hint: the ability to type 'make' (one character less than 'mm qq') to
>> start a build process involving 1000s of files, 100s of directories,
>> 10s of 1000s of lines of scripts, dozens of specialist utilities,
>> taking several minutes to complete, with myriad failure points, is
>> NOT what I would count as simpler.
>>
>>
>>
> 
> It is far more complicated than yours if all the person wants is an exe.
> It is simpler than your process if the person has higher ambitions.
> Like fixing bugs or adding features.

I explained about these (1) and (2) requirements in another post.

> 
> I suppose that you achieved build simplicity by means of amalgamation.

Actually build simplicity is exactly the same without amalgamation:

   c:\qx>mm qq
   Compiling qq.m to qq.exe

But here qq.m is the lead module of several dozen comprising the 
project, plus there are embedded support files.

If distributing source for somebody else to build from scratch however, 
provided they have mm.exe, then this is a tidy way to do it.

The amalgamation was created like this:

   c:\qx>mm -ma qq
   Compiling qq.m to qq.ma
   Writing  qq.ma

The 'mm qq' invocation is a feature of my language which has a module 
scheme, which lets it discover the dependent source files.

C doesn't have that. I have played around with a few ideas, but they 
require either a modified C compiler, or some script which extracts 
build info embedded in the C source.

However this will only work for new programs; it doesn't help with 
existing open source software where that info is disseminated within 
various makefiles or scripts.

So the latter still comes down to being able to determine the inputs to 
feed to a C compiler - basically the list of C files.

The C source /I/ might provide will be transpiled from my original 
source projects, and will be a single C source file with no headers. For 
example:

   c:\qx>mc -c qc                          # For Windows target
   M6 Compiling qc.m---------- to qc.c

   c:\qx>mc -c -linux qc -out:qu           # For Linux target
   M6 Compiling qc.m---------- to qu.c

Those files can be trivially built on either OS with no makefile:

   c:\qx>gcc qc.c                                              # Windows

   c:\qx>wsl
   root@DESKTOP-11:/mnt/c/qx# gcc qu.c -lm -ldl -fno-builtin   # Linux

(Check it works on Linux:)

   root@DESKTOP-11:/mnt/c/qx# ./a.out -nosys hello
   Hello, World! 11-Jan-2025 13:36:06

(qc.c is a version 'qq' without an ASM-based accelerator module. Inline 
assembly can't be transpiled to C.)

> Do you provide your potential users with de-amalgamation tool, just to
> giv'em a minimal chance?

The .ma file is just a text file that concatenates the source and 
support files, each preceded by a header like this:

   === qq.m 0 0 1/44 ===

A simple script can separate them (or a text editor can do it manually).