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