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: Thu, 07 Sep 2017 08:32:12 +0200	[thread overview]
Message-ID: <e1e6390dc75609285035e286e5aeffaa@hypermove.net> (raw)
In-Reply-To: <3380ffb801bde3cb8d4c4d60faacb5df@hypermove.net>

On 2017-09-06 20:25, Amirouche Boubekki wrote:
> 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"

I pushed my changes to 
https://gitlab.com/amirouche/guile/tree/compile-to-js-2017

I am only missing `js-cloure` procedure to be able to submit guile 
callbacks
to javascript world.

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



  reply	other threads:[~2017-09-07  6:32 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
2017-09-07  6:32     ` Amirouche Boubekki [this message]
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=e1e6390dc75609285035e286e5aeffaa@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).