unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
From: Amirouche Boubekki <amirouche@hypermove.net>
To: Ian Price <ianprice90@gmail.com>
Cc: guile-user@gnu.org,
	guile-user <guile-user-bounces+amirouche=hypermove.net@gnu.org>
Subject: Re: Summer of Code Recap
Date: Wed, 06 Sep 2017 20:25:17 +0200	[thread overview]
Message-ID: <3380ffb801bde3cb8d4c4d60faacb5df@hypermove.net> (raw)
In-Reply-To: <40d9af53c985dfe680d8df822ace02a3@hypermove.net>

On 2017-09-02 00:09, Amirouche Boubekki wrote:
> On 2017-08-28 20:56, Ian Price wrote:
> 
>> 1 Introduction
>> ==============
>> 
>>   As many of you are aware, I have been working on compiling Guile
>>   Scheme to JavaScript this summer, as part of the Google Summer of
>>   Code. This post serves to bookend my work for the year.
>> 
>>   Before I go any further, I have to give my thanks to my mentor 
>> [Chris
>>   Webber], without whom this project would have fizzled out weeks ago;
>>   Google and the Gnu Project, naturally, for providing the Summer of
>>   Code and allowing me to work on this project; and our fearless 
>> leader,
>>   [Andy Wingo], for answering a wide variety of stupid questions.
>> 
> 
> Sorry, for my last mail I was a bit upset a minimal scm file with "42"
> will crash.
> 
> Anyway, I did a bit of exploration:
> 
> Apparently webkit does ship TCO and safari is the only browser [0] 
> shipping it.
> So it will happen soon enough for chrome, but chrome is not a solution 
> for many
> of us. I don't know when firefox with ship TCO.
> 
> [0] https://www.chromestatus.com/feature/5516876633341952
> 
> Anyway, TCO requires "use strict"; thing to work, so I prefixed the 
> output
> of guild jslink with that and it lead to discover a bug where there is 
> two
> times the same argument called `v_rest`. You can run the file with
> the following command:
> 
>    node --harmony_tailcalls main.js
> 
> It will tell you where the error is.
> 
> Here is the fixed code:
> 
>     var k_27363 = function(v_19412, k_27499) {
>       var k_27364 = function(v_19412, v_e, v_p, v_w, v_mod) {
>         var v_19413 = v_e;
>         var v_19414 = v_p;
>         var v_19415 = v_w;
>         var v_19416 = v_mod;
>         if (scheme["is_true"](scheme["primitives"]["pair?"](v_19413))) 
> {
>           {
>             var v_19417 = scheme["primitives"]["car"](v_19413);
>             var v_19418 = scheme["EMPTY"];
>             scheme["primitives"]["handle-interrupts"]();
>             var k_27370 = function(v_first, v_rest) {
>               var v_19419 = v_first;
>               var v_19420 = v_rest;
>               if (scheme["is_true"](v_19419)) {
>                 {
>                   var v_19421 = scheme["primitives"]["cdr"](v_19413);
>                   scheme["primitives"]["handle-interrupts"]();
>                   var k_27375 = function(v_rest, v_rest2) {  // The
> error is HERE!
>                     var v_19422 = v_rest;
>                     var v_19423 = v_rest2;
> 
> With that "fix" it run under nodejs v8.4.0 without increasing the 
> callstack.
> So it's good news!

With both patches applied and "use strict"; prefixed to the output of 
jslink
it works with chromium 60.0.3112.113 using the following command:

chromium-browser --js-flags="--harmony-tailcalls"

-- 
Amirouche ~ amz3 ~ http://www.hyperdev.fr



  parent reply	other threads:[~2017-09-06 18:25 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-28 18:56 Summer of Code Recap Ian Price
2017-08-28 19:25 ` Christopher Allan Webber
2017-08-28 19:58   ` Nala Ginrut
2017-08-28 21:39 ` Amirouche
2017-08-29  3:27   ` Christopher Allan Webber
2017-09-01 22:09 ` Amirouche Boubekki
2017-09-02  6:58   ` Arne Babenhauserheide
2017-09-06 18:25   ` Amirouche Boubekki [this message]
2017-09-07  6:32     ` Amirouche Boubekki
2017-09-08 12:18       ` Amirouche Boubekki
2021-05-11 14:45 ` Christopher Lemmer Webber
2021-05-11 15:08   ` Christopher Lemmer Webber
2021-05-11 15:19     ` Christopher Lemmer Webber
2021-10-11  1:50       ` Christine Lemmer-Webber
2021-10-11  5:28         ` Dr. Arne Babenhauserheide
2021-05-11 15:50   ` Dr. Arne Babenhauserheide

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3380ffb801bde3cb8d4c4d60faacb5df@hypermove.net \
    --to=amirouche@hypermove.net \
    --cc=guile-user-bounces+amirouche=hypermove.net@gnu.org \
    --cc=guile-user@gnu.org \
    --cc=ianprice90@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).