JaroslavTulach: /* Collecting profiles for guided optimizations */ - 2019-08-30 08:50:06

Collecting profiles for guided optimizations

←Older revision Revision as of 08:50, 30 August 2019
Line 9: Line 9:
With this kind of setup the whole orchestration of the containers is simplified. Development produces [[JAR]] files of the application and operations can distribute them to [[Docker]] containers. When needed, they can selectively enable the profiles gathering via a remote [[JMX]] connection. Later they can retrieve the collected data via the same JMX connection and provide them back to development to use them when generating the final [[NativeImage]] binary.
With this kind of setup the whole orchestration of the containers is simplified. Development produces [[JAR]] files of the application and operations can distribute them to [[Docker]] containers. When needed, they can selectively enable the profiles gathering via a remote [[JMX]] connection. Later they can retrieve the collected data via the same JMX connection and provide them back to development to use them when generating the final [[NativeImage]] binary.
-
This all was working in [[GraalVM]] EE 1.0 RC14. Since RC15 it needs an additional option '''-XX:-UseJVMCINativeLibrary ''' to (temporarily) disable the '''libgraal''' compiler. Btw. [[AOTMadeFaster|Improving performance of GraalVM native images with profile-guided optimizations]] shows how to use the functionality in [[GraalVM]] EE 19.2.0.
+
This all was working in [[GraalVM]] EE 1.0 RC14. Since RC15 it needs an additional option '''-XX:-UseJVMCINativeLibrary ''' to (temporarily) disable the '''libgraal''' compiler. Btw. [[AOTMadeFaster|Improving performance of GraalVM native images with profile-guided optimizations]] post shows how to use the functionality in [[GraalVM]] EE 19.2.0.
<!-- GR-13626 -->
<!-- GR-13626 -->

JaroslavTulach: /* Collecting profiles for guided optimizations */ - 2019-08-30 08:49:48

Collecting profiles for guided optimizations

←Older revision Revision as of 08:49, 30 August 2019
Line 9: Line 9:
With this kind of setup the whole orchestration of the containers is simplified. Development produces [[JAR]] files of the application and operations can distribute them to [[Docker]] containers. When needed, they can selectively enable the profiles gathering via a remote [[JMX]] connection. Later they can retrieve the collected data via the same JMX connection and provide them back to development to use them when generating the final [[NativeImage]] binary.
With this kind of setup the whole orchestration of the containers is simplified. Development produces [[JAR]] files of the application and operations can distribute them to [[Docker]] containers. When needed, they can selectively enable the profiles gathering via a remote [[JMX]] connection. Later they can retrieve the collected data via the same JMX connection and provide them back to development to use them when generating the final [[NativeImage]] binary.
-
This all was working in [[GraalVM]] EE 1.0 RC14. Since RC15 it needs an additional option '''-XX:-UseJVMCINativeLibrary ''' to (temporarily) disable the '''libgraal''' compiler.
+
This all was working in [[GraalVM]] EE 1.0 RC14. Since RC15 it needs an additional option '''-XX:-UseJVMCINativeLibrary ''' to (temporarily) disable the '''libgraal''' compiler. Btw. [[AOTMadeFaster|Improving performance of GraalVM native images with profile-guided optimizations]] shows how to use the functionality in [[GraalVM]] EE 19.2.0.
<!-- GR-13626 -->
<!-- GR-13626 -->

JaroslavTulach: /* Universal Secure Scripting API */ - 2019-06-09 03:55:56

Universal Secure Scripting API

←Older revision Revision as of 03:55, 9 June 2019
Line 14: Line 14:
=== Universal Secure Scripting API ===
=== Universal Secure Scripting API ===
-
[[Nashorn]] got deprecated in [[JDK]]11. As such the [[NetBeans]] community started to seek a replacement. To make the migration as smooth as possible [[I]] started to work on
+
[[Nashorn]] got deprecated in [[JDK]]11. As such the [[NetBeans]] community started to seek a replacement. As a loyal member of [[OracleLabs]] [[I]] was convinced that [[Graal.js]] is the way to go. To make the migration as smooth as possible [[I]] started to work on
universal {{NB|org-netbeans-api-scripting|org/netbeans/api/scripting|Scripting}} [[API]]. There was no need to hurry until '''CVE-2018-17191''' was reported. Then we needed an immediate action.
universal {{NB|org-netbeans-api-scripting|org/netbeans/api/scripting|Scripting}} [[API]]. There was no need to hurry until '''CVE-2018-17191''' was reported. Then we needed an immediate action.
The community tried to empower [[Rhino]], but at the end we settled with a secured solution based on [[Nashorn]] with the path paved to switch to [[Graal.js]] - the scripting engine based on [[GraalVM]] and [[Truffle]].
The community tried to empower [[Rhino]], but at the end we settled with a secured solution based on [[Nashorn]] with the path paved to switch to [[Graal.js]] - the scripting engine based on [[GraalVM]] and [[Truffle]].
Line 25: Line 25:
{{NB|org-netbeans-libs-graalsdk|org/netbeans/libs/graalsdk|package-summary}} shows.
{{NB|org-netbeans-libs-graalsdk|org/netbeans/libs/graalsdk|package-summary}} shows.
-
Fixing the vulnerability, polishing [[Graal.js]] and [[Truffle]] for inclusion into [[NetBeans]] kept me busy for half a year. Switching [[NetBeans]] to the latest version of [[GraalVM]] still remains on my TODO list.
+
Fixing the vulnerability, polishing [[Graal.js]] and [[Truffle]] for inclusion into [[NetBeans]] kept me busy for half a year. Switching to the latest version 19.0.0 of [[GraalVM]] has been finished for 11.1 release of [[Apache]] [[NetBeans]].
=== [[Java]] as the Universal [[Language]] ===
=== [[Java]] as the Universal [[Language]] ===

JaroslavTulach: /* Collecting profiles for guided optimizations */ - 2019-05-06 08:21:12

Collecting profiles for guided optimizations

←Older revision Revision as of 08:21, 6 May 2019
Line 9: Line 9:
With this kind of setup the whole orchestration of the containers is simplified. Development produces [[JAR]] files of the application and operations can distribute them to [[Docker]] containers. When needed, they can selectively enable the profiles gathering via a remote [[JMX]] connection. Later they can retrieve the collected data via the same JMX connection and provide them back to development to use them when generating the final [[NativeImage]] binary.
With this kind of setup the whole orchestration of the containers is simplified. Development produces [[JAR]] files of the application and operations can distribute them to [[Docker]] containers. When needed, they can selectively enable the profiles gathering via a remote [[JMX]] connection. Later they can retrieve the collected data via the same JMX connection and provide them back to development to use them when generating the final [[NativeImage]] binary.
-
This all was working in [[GraalVM]] EE 1.0 RC14. Since RC15 it needs an additional option ''--jvmci:-UseNativeCompiler'' to (temporarily) disable the '''libgraal''' compiler.
+
This all was working in [[GraalVM]] EE 1.0 RC14. Since RC15 it needs an additional option '''-XX:-UseJVMCINativeLibrary ''' to (temporarily) disable the '''libgraal''' compiler.
<!-- GR-13626 -->
<!-- GR-13626 -->

JaroslavTulach: /* APIReviews */ - 2019-05-01 05:42:07

APIReviews

←Older revision Revision as of 05:42, 1 May 2019
Line 45: Line 45:
It is impossible to review quality of an [[API]] while designing it. The [[API]] author is ''damaged'' by too much knowledge. He has an endless insight into internals of the [[API]] and cannot approach it with newcomer's eyes. When [[I]] design my [[API]]s, I am also blinded by the "knowledge".
It is impossible to review quality of an [[API]] while designing it. The [[API]] author is ''damaged'' by too much knowledge. He has an endless insight into internals of the [[API]] and cannot approach it with newcomer's eyes. When [[I]] design my [[API]]s, I am also blinded by the "knowledge".
-
As part of [[OracleLabs]] co-operation with universities I started to teach a semester course at [[MatFyz]]. It is called ''Practical Dynamic Compilation'' and it goes deeper than my usual hour or two long highlights of various [[Graal]] or [[Truffle]] features. As such I had to develop completely new material (see the [https://github.com/jaroslavtulach/talk2compiler Talk 2 Compiler] and [https://github.com/JaroslavTulach/SelfGraal Self Language]) repositories and use things that I was aware of, but never needed to know by heart. Btw. similar situation happened when [[I]] was working on [[Graal.js]] and [[Maven]] co-operation in the [[graal-js-archetype https://github.com/graalvm/graal-js-archetype] repository.
+
As part of [[OracleLabs]] co-operation with universities I started to teach a semester course at [[MatFyz]]. It is called ''Practical Dynamic Compilation'' and it goes deeper than my usual hour or two long highlights of various [[Graal]] or [[Truffle]] features. As such I had to develop completely new material (see the [https://github.com/jaroslavtulach/talk2compiler Talk 2 Compiler] and [https://github.com/JaroslavTulach/SelfGraal Self Language]) repositories and use things that I was aware of, but never needed to know by heart. Btw. similar situation happened when [[I]] was working on [[Graal.js]] and [[Maven]] co-operation in the [https://github.com/graalvm/graal-js-archetype graal-js-archetype] repository.
It turned out that there are many hidden assumptions (especially related to [[Truffle]] DSL) that weren't working as [[I]] have originally expected. In fact I performed an [[APIReview]] approaching the [[API]] with my own expectations, but not detailed knowledge of the internals. Looks like I can be quite [[good]] at that. If you have an [[API]] and you want a usability study, [[Talkback]] and [[I]] can help!
It turned out that there are many hidden assumptions (especially related to [[Truffle]] DSL) that weren't working as [[I]] have originally expected. In fact I performed an [[APIReview]] approaching the [[API]] with my own expectations, but not detailed knowledge of the internals. Looks like I can be quite [[good]] at that. If you have an [[API]] and you want a usability study, [[Talkback]] and [[I]] can help!

JaroslavTulach: /* APIReviews */ - 2019-05-01 05:41:39

APIReviews

←Older revision Revision as of 05:41, 1 May 2019
Line 43: Line 43:
=== [[APIReview]]s ===
=== [[APIReview]]s ===
-
It is impossible to review quality of an [[API]] while designing it. The [[API]] author is ''damaged'' by too much knowledge. He has an endless insight into behavior of the [[API]] and cannot approach it with newcomer's eyes. When [[I]] design my [[API]]s, I am also blinded by the knowledge.
+
It is impossible to review quality of an [[API]] while designing it. The [[API]] author is ''damaged'' by too much knowledge. He has an endless insight into internals of the [[API]] and cannot approach it with newcomer's eyes. When [[I]] design my [[API]]s, I am also blinded by the "knowledge".
As part of [[OracleLabs]] co-operation with universities I started to teach a semester course at [[MatFyz]]. It is called ''Practical Dynamic Compilation'' and it goes deeper than my usual hour or two long highlights of various [[Graal]] or [[Truffle]] features. As such I had to develop completely new material (see the [https://github.com/jaroslavtulach/talk2compiler Talk 2 Compiler] and [https://github.com/JaroslavTulach/SelfGraal Self Language]) repositories and use things that I was aware of, but never needed to know by heart. Btw. similar situation happened when [[I]] was working on [[Graal.js]] and [[Maven]] co-operation in the [[graal-js-archetype https://github.com/graalvm/graal-js-archetype] repository.
As part of [[OracleLabs]] co-operation with universities I started to teach a semester course at [[MatFyz]]. It is called ''Practical Dynamic Compilation'' and it goes deeper than my usual hour or two long highlights of various [[Graal]] or [[Truffle]] features. As such I had to develop completely new material (see the [https://github.com/jaroslavtulach/talk2compiler Talk 2 Compiler] and [https://github.com/JaroslavTulach/SelfGraal Self Language]) repositories and use things that I was aware of, but never needed to know by heart. Btw. similar situation happened when [[I]] was working on [[Graal.js]] and [[Maven]] co-operation in the [[graal-js-archetype https://github.com/graalvm/graal-js-archetype] repository.

JaroslavTulach: OtherGraalAdventures moved to FourthGraalAdventures - 2019-05-01 05:33:03

OtherGraalAdventures moved to FourthGraalAdventures

←Older revision Revision as of 05:33, 1 May 2019

JaroslavTulach: /* APIReviews */ - 2019-04-30 15:07:05

APIReviews

←Older revision Revision as of 15:07, 30 April 2019
Line 45: Line 45:
It is impossible to review quality of an [[API]] while designing it. The [[API]] author is ''damaged'' by too much knowledge. He has an endless insight into behavior of the [[API]] and cannot approach it with newcomer's eyes. When [[I]] design my [[API]]s, I am also blinded by the knowledge.
It is impossible to review quality of an [[API]] while designing it. The [[API]] author is ''damaged'' by too much knowledge. He has an endless insight into behavior of the [[API]] and cannot approach it with newcomer's eyes. When [[I]] design my [[API]]s, I am also blinded by the knowledge.
-
As part of [[OracleLabs]] co-operation with universities I started to teach a semester course at [[MatFyz]]. It is called ''Practical Dynamic Compilation'' and it goes deeper than my usual hour or two long highlights of various [[Graal]] or [[Truffle]] features. As such I had to develop completely new material (see the [https://github.com/jaroslavtulach/talk2compiler Talk 2 Compiler] and [https://github.com/JaroslavTulach/SelfGraal Self Language]) repositories and use things that I was aware of, but never needed to know by heart. Btw. similar situation happened when [[I] was working on [[Graal.js]] and [[Maven]] co-operation in the [[graal-js-archetype https://github.com/graalvm/graal-js-archetype] repository.
+
As part of [[OracleLabs]] co-operation with universities I started to teach a semester course at [[MatFyz]]. It is called ''Practical Dynamic Compilation'' and it goes deeper than my usual hour or two long highlights of various [[Graal]] or [[Truffle]] features. As such I had to develop completely new material (see the [https://github.com/jaroslavtulach/talk2compiler Talk 2 Compiler] and [https://github.com/JaroslavTulach/SelfGraal Self Language]) repositories and use things that I was aware of, but never needed to know by heart. Btw. similar situation happened when [[I]] was working on [[Graal.js]] and [[Maven]] co-operation in the [[graal-js-archetype https://github.com/graalvm/graal-js-archetype] repository.
It turned out that there are many hidden assumptions (especially related to [[Truffle]] DSL) that weren't working as [[I]] have originally expected. In fact I performed an [[APIReview]] approaching the [[API]] with my own expectations, but not detailed knowledge of the internals. Looks like I can be quite [[good]] at that. If you have an [[API]] and you want a usability study, [[Talkback]] and [[I]] can help!
It turned out that there are many hidden assumptions (especially related to [[Truffle]] DSL) that weren't working as [[I]] have originally expected. In fact I performed an [[APIReview]] approaching the [[API]] with my own expectations, but not detailed knowledge of the internals. Looks like I can be quite [[good]] at that. If you have an [[API]] and you want a usability study, [[Talkback]] and [[I]] can help!

JaroslavTulach: /* Minors */ - 2019-04-30 15:02:44

Minors

←Older revision Revision as of 15:02, 30 April 2019
Line 41: Line 41:
Of course, achieving that required few fixes in the {{truffle|org/graalvm/nativeimage|StackValue}} and especially introduction of {{truffle|org/graalvm/nativeimage/c/function|CEntryPoint.Builtin}} builtin. Then the [https://github.com/jaroslavtulach/matrixultimate Matrix the Ultimate] magic become possible.
Of course, achieving that required few fixes in the {{truffle|org/graalvm/nativeimage|StackValue}} and especially introduction of {{truffle|org/graalvm/nativeimage/c/function|CEntryPoint.Builtin}} builtin. Then the [https://github.com/jaroslavtulach/matrixultimate Matrix the Ultimate] magic become possible.
-
=== Minors ===
+
=== [[APIReview]]s ===
-
* Teaching a course at [[MatFyz]]: Practical Dynamic Compilation
+
It is impossible to review quality of an [[API]] while designing it. The [[API]] author is ''damaged'' by too much knowledge. He has an endless insight into behavior of the [[API]] and cannot approach it with newcomer's eyes. When [[I]] design my [[API]]s, I am also blinded by the knowledge.
-
** Talk 2 compiler: https://github.com/jaroslavtulach/talk2compiler
+
 
-
** Self Language, https://github.com/JaroslavTulach/SelfGraal
+
As part of [[OracleLabs]] co-operation with universities I started to teach a semester course at [[MatFyz]]. It is called ''Practical Dynamic Compilation'' and it goes deeper than my usual hour or two long highlights of various [[Graal]] or [[Truffle]] features. As such I had to develop completely new material (see the [https://github.com/jaroslavtulach/talk2compiler Talk 2 Compiler] and [https://github.com/JaroslavTulach/SelfGraal Self Language]) repositories and use things that I was aware of, but never needed to know by heart. Btw. similar situation happened when [[I] was working on [[Graal.js]] and [[Maven]] co-operation in the [[graal-js-archetype https://github.com/graalvm/graal-js-archetype] repository.
-
* [[Graal.js]] [[maven]] archetype updates
+
 
-
** https://github.com/graalvm/graal-js-archetype
+
It turned out that there are many hidden assumptions (especially related to [[Truffle]] DSL) that weren't working as [[I]] have originally expected. In fact I performed an [[APIReview]] approaching the [[API]] with my own expectations, but not detailed knowledge of the internals. Looks like I can be quite [[good]] at that. If you have an [[API]] and you want a usability study, [[Talkback]] and [[I]] can help!
[[Category:Video]]
[[Category:Video]]

JaroslavTulach: /* Universal Secure Scripting API */ - 2019-04-27 08:29:53

Universal Secure Scripting API

←Older revision Revision as of 08:29, 27 April 2019
Line 14: Line 14:
=== Universal Secure Scripting API ===
=== Universal Secure Scripting API ===
-
[[Nashorn]] got deprecated in [[JDK]]11. As such the [[NetBeans]] community started to seek a replacement. [[I]] started to work on
+
[[Nashorn]] got deprecated in [[JDK]]11. As such the [[NetBeans]] community started to seek a replacement. To make the migration as smooth as possible [[I]] started to work on
universal {{NB|org-netbeans-api-scripting|org/netbeans/api/scripting|Scripting}} [[API]]. There was no need to hurry until '''CVE-2018-17191''' was reported. Then we needed an immediate action.
universal {{NB|org-netbeans-api-scripting|org/netbeans/api/scripting|Scripting}} [[API]]. There was no need to hurry until '''CVE-2018-17191''' was reported. Then we needed an immediate action.
The community tried to empower [[Rhino]], but at the end we settled with a secured solution based on [[Nashorn]] with the path paved to switch to [[Graal.js]] - the scripting engine based on [[GraalVM]] and [[Truffle]].
The community tried to empower [[Rhino]], but at the end we settled with a secured solution based on [[Nashorn]] with the path paved to switch to [[Graal.js]] - the scripting engine based on [[GraalVM]] and [[Truffle]].