Feature request: Javacript Arrays.from() should accept Java Iterable or JS map on java collections should map to Iterable.stream().map()

Jerven Tjalling Bolleman jerven.bolleman at sib.swiss
Tue Aug 8 14:35:37 UTC 2017


Hi All,

This is the biggest annoyance up to now. Given a java collection object 
one can't use JS map methods without doing some work around. For now I 
have an utility method but I think ergonomically it would be nice to be 
able to do this without further work for the users of graal.js.

Examples of what I would like -> given that "list" is a java.util.List, 
"joining" is bound to the Function Collectors.joining() and we are in 
Javascript using template literals.

The following works already.

`<ul>
	${list.stream().map(item => `${item.toString()}.collect(joining)
</ul>`

But it would be really nice if we could have the following "just" work.

`<ul>
	${list.map(item => `${item.toString()}.join('')
</ul>`

i.e. the java collection interface is decorated with a JS map method.
if that won't be possible then matching the JS @@iterable protocol to 
the Java iterable interface would be nice because then we could at least do.


`<ul>
	${Array.from(list).map(item => `${item.toString()}.join('')
</ul>`

Regards,
Jerven


On 08/08/2017 04:28 PM, Daniele Bonetta wrote:
> Hi Jerven,
> 
> there is no Graal.js-only list at the moment, so feel free to report any 
> issue on this list :)
> 
> Regards,
> 
> Daniele
> 
> 
> 
> On 08.08.2017 15:21, Jerven Tjalling Bolleman wrote:
>> Hi Daniele, All,
>>
>> Thanks, for the fast reply. Does anyone mind if I keep sending e-mails 
>> in this form to the graal-dev list or would you prefer I send these 
>> Graal.js java interop ones too a different list?
>>
>> I already have a few more ;)
>>
>> Regards,
>> Jerven
>>
>> On 08/08/2017 02:53 PM, Daniele Bonetta wrote:
>>> Hi Jerven,
>>>
>>> your code is correct, but does not work due to a bug in the Graal.js 
>>> interop support.
>>>
>>> We already have a fix for that bug, and the fix will be part of the 
>>> next monthly Graal VM release (v0.27).
>>>
>>>
>>> Thanks for your bug report!
>>>
>>> Regards,
>>>
>>> Daniele
>>>
>>>
>>>
>>> On 08.08.2017 11:54, Jerven Tjalling Bolleman wrote:
>>>> Hi All,
>>>>
>>>> Next question, How can I import a java.lang.Long into the js space 
>>>> inside the context. I am now working around it by passing it in as a 
>>>> parameter e.g.
>>>>
>>>> Value function = context.eval("js", "function(x,out){out.print(x)}");
>>>> function.execute(out, 1000_000_000_000L);
>>>>
>>>> Works
>>>>
>>>> However,
>>>>
>>>> context.exportSymbol("x",1000_000_000_000L);
>>>> context.exportSymbol("out", response.getOutoutStream());
>>>> Value function = context.eval("js", 
>>>> "x=Interop.import('x');out=Interop.import('out);out.print(x)");
>>>>
>>>> Does not with the following exception.
>>>>
>>>> java.lang.Long cannot be cast to 
>>>> com.oracle.truffle.api.interop.TruffleObject
>>>>
>>>> Regards,
>>>> Jerven
>>>>
>>>>
>>>>
>>>> On 08/07/2017 02:39 PM, Doug Simon wrote:
>>>>> We are currently working on extensive documentation for GraalVM but 
>>>>> it's not yet ready for release.
>>>>>
>>>>> You can find a draft of the embedding page at 
>>>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__www.dropbox.com_s_ia4yoe2jh6viyzq_Embed-2520Languages-2520with-2520the-2520Graal-2520Polyglot-2520SDK.pdf-3Fdl-3D0&d=DwICaQ&c=RoP1YumCXCgaWHvlZYR8PQcxBKCX5YTpkKY057SbK10&r=W5Zo00VHyUAb3eyeSOfpd8vQ04i6XWgfLSLJcJECgxE&m=6PDu846uJ078h-SZRYjYKPBaGR1da2ltWJgHrzftIso&s=Cv0eEOI0tBRk2cYh61HPe4A00Xn4uUVm32MQgXGQSro&e= 
>>>>>
>>>>>
>>>>> Keep in mind that it's only a draft and may contain errors.
>>>>>
>>>>> -Doug
>>>>>
>>>>>> On 7 Aug 2017, at 12:49, Jerven Tjalling Bolleman 
>>>>>> <jerven.bolleman at sib.swiss> wrote:
>>>>>>
>>>>>> Dear Graal devs,
>>>>>>
>>>>>> Really love the work you are doing. I am just looking for some 
>>>>>> documentation.
>>>>>>
>>>>>> In the Graal OTN 0.26 release graalvm-0.26/examples/embed/README.md
>>>>>> file a location is mentioned where one should find graal embedding 
>>>>>> documentation.
>>>>>>
>>>>>> https://urldefense.proofpoint.com/v2/url?u=http-3A__www.graalvm.org_docs_embed_&d=DwICaQ&c=RoP1YumCXCgaWHvlZYR8PQcxBKCX5YTpkKY057SbK10&r=W5Zo00VHyUAb3eyeSOfpd8vQ04i6XWgfLSLJcJECgxE&m=6PDu846uJ078h-SZRYjYKPBaGR1da2ltWJgHrzftIso&s=X_S7O7VP-odaX11BVYCcKzjL8pLneZMoXl98Xzp-VmQ&e= 
>>>>>>
>>>>>> However, this does not resolve at this time.
>>>>>>
>>>>>> Otherwise, the example in that directory was exactly what I was 
>>>>>> looking for!
>>>>>>
>>>>>> I did want to know if it is already possible to run graal.js on a 
>>>>>> JDK9-EA? Without graal if need be? for example by copying the 
>>>>>> trufflejs.jar and truffle.jar to a JDK9 classpath?
>>>>>>
>>>>>> Regards,
>>>>>> Jerven
>>>>>> -- 
>>>>>> -------------------------------------------------------------------
>>>>>> Jerven Bolleman Jerven.Bolleman at sib.swiss
>>>>>> SIB Swiss Institute of Bioinformatics  Tel: +41 (0)22 379 58 85
>>>>>> CMU, rue Michel Servet 1               Fax: +41 (0)22 379 58 58
>>>>>> 1211 Geneve 4,
>>>>>> Switzerland     www.sib.swiss - www.uniprot.org
>>>>>> Follow us at 
>>>>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__twitter.com_-23-21_uniprot&d=DwICaQ&c=RoP1YumCXCgaWHvlZYR8PQcxBKCX5YTpkKY057SbK10&r=W5Zo00VHyUAb3eyeSOfpd8vQ04i6XWgfLSLJcJECgxE&m=6PDu846uJ078h-SZRYjYKPBaGR1da2ltWJgHrzftIso&s=0kjMaBI9UJj3x8hoD0ePJJLhOMChklmfrE9b9kH0AKk&e= 
>>>>>> -------------------------------------------------------------------
>>>>>
>>>>
>>>
>>
> 

-- 
-------------------------------------------------------------------
Jerven Bolleman                        Jerven.Bolleman at sib.swiss
SIB Swiss Institute of Bioinformatics  Tel: +41 (0)22 379 58 85
CMU, rue Michel Servet 1               Fax: +41 (0)22 379 58 58
1211 Geneve 4,
Switzerland     www.sib.swiss - www.uniprot.org
Follow us at https://twitter.com/#!/uniprot
-------------------------------------------------------------------


More information about the graal-dev mailing list