guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Guile VM interpreter in GraalVM Truffle framework


From: Maxime Devos
Subject: Re: Guile VM interpreter in GraalVM Truffle framework
Date: Fri, 23 Dec 2022 21:51:11 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.5.0

On 23-12-2022 18:06, Arvydas Silanskas wrote:
Good day,

I have aspirations to run scheme on graalvm's truffle framework. And on superficial research, it seems implementing a Guile VM bytecode interpreter could be easiest path. I just want to inquire, if someone already had similar ideas and in secrecy is working or planning to on this? If you're familiar with truffle (I'm not), any insights on "guile on graal" would also be welcome.

Best regards

Arvydas

Scheme has a notion of ephemerons and weak hash tables.

Java (last time I checked, which is quite some time ago) does not have a notion of ephemerons. While it does have a notion of 'weak hash tables', it is a different notion -- in the Scheme variant(*), the value is neither a strong nor a weak reference, in the sense that if the key is alive then the value is alive, but even if the value keeps a reference to the key then the ephemeron (/ hash table entry) this does not imply the key is alive when the ephemeron is alive (unlike if the key is weak and the value is strong).

As (IIUC) GraalVM is a Java thing (and hence, no ephemerons), consequently you can't implement (bug-free and without missing features) Guile on top of GraalVM.

(*) Actually, Guile implements Java's kind of hash tables and doesn't implement ephemerons, but that's a bug to be fixed with the new GC of Guile that is being developed. At least, maybe the old hash tables are kept, but IIUC we'll get access to the new kind of hash tables too.

Greetings,
Maxime.

Attachment: OpenPGP_0x49E3EE22191725EE.asc
Description: OpenPGP public key

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]