unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
* bug#22366: Chicken Scheme release tarballs ship non-source C code
@ 2016-01-13 18:54 Thompson, David
  2020-05-12 23:33 ` bug#22366: Status? " zimoun
  2021-08-17  9:13 ` bug#22366: " Mario Domenech Goulart
  0 siblings, 2 replies; 5+ messages in thread
From: Thompson, David @ 2016-01-13 18:54 UTC (permalink / raw)
  To: 22366

Because Chicken Scheme's compiler is self-hosting, and because it
compiles to C as an intermediate form, the maintainers circumvented
the bootstrapping problem by shipping generated C code for the
compiler.  Many *.c files feature a comment that starts like this:

    Generated from optimizer.scm by the CHICKEN compiler

This is *not* source code, it's a binary disguised as C source code.

To resolve this bug, we need to delete these generated files from the
source tarball and figure out how to bootstrap Chicken without them.
Maybe someone who actively uses Chicken knows how to do this?

- Dave

^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#22366: Status? Chicken Scheme release tarballs ship non-source C code
  2016-01-13 18:54 bug#22366: Chicken Scheme release tarballs ship non-source C code Thompson, David
@ 2020-05-12 23:33 ` zimoun
  2020-05-14 19:04   ` bug#22366: [EXT] Bug#22366 " Thompson, David
  2021-08-17  9:13 ` bug#22366: " Mario Domenech Goulart
  1 sibling, 1 reply; 5+ messages in thread
From: zimoun @ 2020-05-12 23:33 UTC (permalink / raw)
  To: dthompson2, 22366

Dear David,

The bug report [1] opened more than 4 years ago about the Chicken
bootstrapping is still pending.

I am not sure to understand these lines; quoting you [1]:

<<
    Generated from optimizer.scm by the CHICKEN compiler

This is *not* source code, it's a binary disguised as C source code.
>>

Why is it an issue for bootstrappability?


Thank you in advance for any comments.
Or could this bug report be closed?

All the best,
simon

[1] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=22366




^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#22366: [EXT] Bug#22366 Status? Chicken Scheme release tarballs ship non-source C code
  2020-05-12 23:33 ` bug#22366: Status? " zimoun
@ 2020-05-14 19:04   ` Thompson, David
  2020-05-15 10:15     ` zimoun
  0 siblings, 1 reply; 5+ messages in thread
From: Thompson, David @ 2020-05-14 19:04 UTC (permalink / raw)
  To: zimoun; +Cc: 22366

On Tue, May 12, 2020 at 7:33 PM zimoun <zimon.toutoune@gmail.com> wrote:
>
> Dear David,
>
> The bug report [1] opened more than 4 years ago about the Chicken
> bootstrapping is still pending.
>
> I am not sure to understand these lines; quoting you [1]:
>
> <<
>     Generated from optimizer.scm by the CHICKEN compiler
>
> This is *not* source code, it's a binary disguised as C source code.
> >>
>
> Why is it an issue for bootstrappability?

Because software is not bootstrappable if it requires taking for
granted files that are not source code.  In this case, it is these C
files.  These files are not source code because they are machine
generated.  In order to generate these files, you need a Chicken
Scheme compiler.  Therefore, you cannot build Chicken Scheme from
source code without already having Chicken Scheme, which makes it
non-bootstrappable.  I have not kept track of this issue but my
understanding was that the Chicken developers do not care (which is
unfortunately a very common reaction from developers of self-hosted
compilers) but it is nevertheless a bootstrapping issue.

> Thank you in advance for any comments.
> Or could this bug report be closed?

I don't think this can be closed because it is still an issue.

 - Dave




^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#22366: [EXT] Bug#22366 Status? Chicken Scheme release tarballs ship non-source C code
  2020-05-14 19:04   ` bug#22366: [EXT] Bug#22366 " Thompson, David
@ 2020-05-15 10:15     ` zimoun
  0 siblings, 0 replies; 5+ messages in thread
From: zimoun @ 2020-05-15 10:15 UTC (permalink / raw)
  To: Thompson, David; +Cc: 22366

Dear David,

On Thu, 14 May 2020 at 21:04, Thompson, David <dthompson2@worcester.edu> wrote:

> > Why is it an issue for bootstrappability?
>
> Because software is not bootstrappable if it requires taking for
> granted files that are not source code.  In this case, it is these C
> files.  These files are not source code because they are machine
> generated.  In order to generate these files, you need a Chicken
> Scheme compiler.  Therefore, you cannot build Chicken Scheme from
> source code without already having Chicken Scheme, which makes it
> non-bootstrappable.  I have not kept track of this issue but my
> understanding was that the Chicken developers do not care (which is
> unfortunately a very common reaction from developers of self-hosted
> compilers) but it is nevertheless a bootstrapping issue.

I am not following your reasoning.  The point is not how the C files
are generated but if they are auditable. -- which in most of the cases
means human-readable.

Considering these generated C files, even if I am not a C expert, they
seems un-auditable.

--8<---------------cut here---------------start------------->8---
C_noret_decl(f24858)
static void C_ccall f24858(C_word c,C_word *av) C_noret;
C_noret_decl(f_10015)
static void C_ccall f_10015(C_word c,C_word *av) C_noret;
C_noret_decl(f_10019)

[...]

/* k10021 in k10017 in a10014 in k9990 in k9987 in k9984 in k8730 in
k8463 in k8451 in k8448 in k8445 in k8441 in k8438 in k8432 in k8393
in walk in chicken.compiler.core#canonicalize-expression in k6295 in
k6292 in k6289 in k6286 in k6283 in ... */
static void C_ccall f_10023(C_word c,C_word *av){
C_word tmp;
C_word t0=av[0];
C_word t1=av[1];
C_word t2;
C_word t3;
C_word t4;
C_word *a;
if(C_unlikely(!C_demand(C_calculate_demand(4,c,4)))){
C_save_and_reclaim((void *)f_10023,c,av);}
a=C_alloc(4);
t2=C_mutate(((C_word *)((C_word*)t0)[2])+1,t1);
t3=(*a=C_CLOSURE_TYPE|3,a[1]=(C_word)f_10026,a[2]=((C_word*)t0)[3],a[3]=((C_word*)t0)[4],tmp=(C_word)a,a+=4,tmp);
/* core.scm:890: ##sys#current-environment1643 */
t4=((C_word*)t0)[5];{
C_word *av2;
if(c >= 5) {
  av2=av;
} else {
  av2=C_alloc(5);
}
av2[0]=t4;
av2[1]=t3;
av2[2]=((C_word*)t0)[6];
av2[3]=C_SCHEME_FALSE;
av2[4]=C_SCHEME_TRUE;
((C_proc)(void*)(*((C_word*)t4+1)))(5,av2);}}
--8<---------------cut here---------------end--------------->8---


> I don't think this can be closed because it is still an issue.

I have failed to generated these C files using another scheme
interpreter.  Yeah, it is more than a hack between the coffee and the
shower. :-)


Thank you for the clarifications and it is still an issue. :-)

All the best,
simon




^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#22366: Chicken Scheme release tarballs ship non-source C code
  2016-01-13 18:54 bug#22366: Chicken Scheme release tarballs ship non-source C code Thompson, David
  2020-05-12 23:33 ` bug#22366: Status? " zimoun
@ 2021-08-17  9:13 ` Mario Domenech Goulart
  1 sibling, 0 replies; 5+ messages in thread
From: Mario Domenech Goulart @ 2021-08-17  9:13 UTC (permalink / raw)
  To: 22366

Hi,

That's a valid point, David.  I've created
http://bugs.call-cc.org/ticket/1776 for the issue you pointed out.

As far as I can tell, it's a tricky issue.  Regarding "my
understanding was that the Chicken developers do not care", and
speaking for myself, I think that's a misunderstanding. Please
consider that CHICKEN is developed by [a few] volunteers.  I think we
would all agree that it would be great to have an easily scrutable
source code, but we are not there.  Contributions to improve that are
welcome, of course.

(I tried to post this comment via the form in
http://issues.guix.gnu.org/22366 , but apparently that hasn't worked --
trying e-mail now)

All the best.
Mario




^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-08-17 16:10 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-13 18:54 bug#22366: Chicken Scheme release tarballs ship non-source C code Thompson, David
2020-05-12 23:33 ` bug#22366: Status? " zimoun
2020-05-14 19:04   ` bug#22366: [EXT] Bug#22366 " Thompson, David
2020-05-15 10:15     ` zimoun
2021-08-17  9:13 ` bug#22366: " Mario Domenech Goulart

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).