問題タブ [graalvm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring - Spring アプリケーションを GraalVM ネイティブ イメージにコンパイルする
GraalVM システムは明らかに、Spring アプリケーションをネイティブ イメージにコンパイルできません。
Spring アプリケーションのサブセットを (たとえば、別個のライブラリーとして) コンパイルし、残りを通常の javac コンパイラーを使用してコンパイルして使用できますか?
あるいは、アプリケーションからいくつかの Spring 機能を除外した場合はどうなるでしょうか?
他の可能性はありますか?
java - 再帰プログラム実行中の Truffle 言語ランタイム エラー
私は現在、 Truffle の使用方法を学ぶために、独自の simplelanguage の実装 ( https://github.com/graalvm/simplelanguage/ ) を作成しています。
実装をテストするためにいくつかのプログラムを作成しました。たとえば、次のフィボナッチ アルゴリズムの実装です。
非再帰バージョンは任意の大きなパラメーター値 (10000 など) で実行できますが、再帰バージョンはすぐに実行時エラーをスローします。
たとえば、増分値を使用して再帰的な fib 関数を実行する簡単なテストを開発し、次の結果を得ました。
問題の原因を特定する方法を見つけることなく、自分の実装を公式のシンプル言語の実装と比較しようとしました。
私の質問は、どうすれば問題の根本原因を見つけることができますか?
PS: これまでのところ、この質問に含める関連するスニペットを特定するのに十分な情報がありませんが、必要に応じて詳細を尋ねてください。ありがとう :)
graalvm - Polyglot API を介した Python の実行には、常に完全なシステム IO アクセスが必要です
polyglot API を使用して、非常に単純な Python コードを実行しようとしています。次のような単純なテストでも実行しようとすると:
または:
このエラーが発生します (以下のスタック トレース):
コンテキストを構築するときに allowIO を true に変更すると、コードは正常に実行され、期待される結果が得られます。より複雑なコードでも試してみましたが、同じ結果が得られました。
Python コードを実行するために IO アクセスが必要なのはなぜですか?
JS で記述および実行される同等のコードは、allowIO を true に設定する必要がないため、Python 固有のもののように思えます。
ご協力いただきありがとうございます。
アップデート
R もゲスト言語としてテストしています。次のテストを実行します。
次のエラーが表示されます。
FastR の予期しないエラー: /Library/Java/JavaVirtualMachines/graalvm-ee-1.0.0-rc4/Contents/Home/jre/languages/R/lib/libR.dylib からの libR の読み込み中にエラーが発生しました。NFI バックエンドで実行している場合、システム プロパティ「truffle.nfi.library」の値として libtrufflenfi.so の場所を指定しましたか? 現在の値は「null」です。OpenMP ランタイム ライブラリ (libgomp.so) はシステムに存在しますか? このライブラリは、たとえば、通常、GCC パッケージの一部です。詳細: ホスト環境によってネイティブ コードへのアクセスが許可されていません。
ただし、「allowNativeAccess」を true に設定すると、コードはエラーなしで正常に実行されます。
言語が異なれば、実行するために必要なアクセス権限の種類も異なりますか?
私のユースケースでは、実行を可能な限りサンドボックス化しようとしています。スクリプトがどの言語で書かれているかに関係なく、与えられたデータにのみアクセスできるようにするスクリプトが必要です。ゲスト言語で実行されるスクリプトは、ホスト システムにアクセスできません。これは達成可能ですか?
部分的なスタック トレース(デバッグに必要な場合は、完全なスタック トレースを提供できます):
org.graalvm.polyglot.PolyglotException: java.lang.SecurityException: 操作は許可されていません: /code/polyglot-test at com.oracle.truffle.api.vm.FileSystems$DeniedIOFileSystem.forbidden(FileSystems.java:489) com.oracle.truffle.api.vm.FileSystems$DeniedIOFileSystem.checkAccess(FileSystems.java:367) at com.oracle.truffle.api.TruffleFile.checkAccess(TruffleFile.java:983) at com.oracle.truffle.api. TruffleFile.exists(TruffleFile.java:102) at com.oracle.graal.python.builtins.modules.PosixModuleBuiltins$StatNode.stat(PosixModuleBuiltins.java:404) at com.oracle.graal.python.builtins.modules.PosixModuleBuiltins$ StatNode.doStat(PosixModuleBuiltins.java:397) com.oracle.graal.python.builtins.modules.PosixModuleBuiltinsFactory$StatNodeFactory$StatNodeGen.executeAndSpecialize(PosixModuleBuiltinsFactory.java:855) com.oracle.graal.python.builtins.modules.PosixModuleBuiltinsFactory$StatNodeFactory$StatNodeGen.execute(PosixModuleBuiltinsFactory.java:807) at com.oracle.graal.python.nodes.function.BuiltinFunctionRootNode$BuiltinBinaryCallNode.execute(BuiltinFunctionRootNode.java:103) com.oracle.graal.python.nodes.function.BuiltinFunctionRootNode.execute(BuiltinFunctionRootNode.java:229) at stat(不明) at stat(../../../../../Library/Java/JavaVirtualMachines /graalvm-ee-1.0.0-rc4/Contents/Home/jre/languages/python/lib-graalpython/posix.py:51:2230-2247) at _path_stat(../../../../ ../Library/Java/JavaVirtualMachines/graalvm-ee-1.0.0-rc4/Contents/Home/jre/languages/python/lib-python/3/importlib/_bootstrap_external.py:82:2759-2772) at _path_is_mode_type( ../../../../../Library/Java/JavaVirtualMachines/graalvm-ee-1.0.0-rc4/Contents/Home/jre/languages/python/lib-python/3/importlib/_bootstrap_external.py:88:2901-2916) _path_isdir(../../../../../ Library/Java/JavaVirtualMachines/graalvm-ee-1.0.0-rc4/Contents/Home/jre/languages/python/lib-python/3/importlib/_bootstrap_external.py:103:3245-3278) で path_hook_for_FileFinder(../ ../../../../Library/Java/JavaVirtualMachines/graalvm-ee-1.0.0-rc4/Contents/Home/jre/languages/python/lib-python/3/importlib/_bootstrap_external.py: 1333:50397-50413) PathFinder._path_hooks(../../../../../Library/Java/JavaVirtualMachines/graalvm-ee-1.0.0-rc4/Contents/Home/jre/languages/ python/lib-python/3/importlib/_bootstrap_external.py:1083:40517-40526) で PathFinder._path_importer_cache(../../../../../Library/Java/JavaVirtualMachines/graalvm-ee- 1.0。0-rc4/Contents/Home/jre/languages/python/lib-python/3/importlib/_bootstrap_external.py:1107:41279-41299) で PathFinder._get_spec(../../../../. ./Library/Java/JavaVirtualMachines/graalvm-ee-1.0.0-rc4/Contents/Home/jre/languages/python/lib-python/3/importlib/_bootstrap_external.py:1135:42391-42421) で PathFinder.find_spec (../../../../../Library/Java/JavaVirtualMachines/graalvm-ee-1.0.0-rc4/Contents/Home/jre/languages/python/lib-python/3/importlib/ _bootstrap_external.py:1166:43686-43722) で _find_spec(../../../../../Library/Java/JavaVirtualMachines/graalvm-ee-1.0.0-rc4/Contents/Home/jre/ languages/python/lib-python/3/importlib/_bootstrap.py:892:28932-28960) at _find_and_load_unlocked(../../../../../Library/Java/JavaVirtualMachines/graalvm-ee- 1.0.0-rc4/Contents/Home/jre/languages/python/lib-python/3/importlib/_bootstrap.py:953:31192-31213) _find_and_load(../../../../../Library/Java/JavaVirtualMachines/graalvm-ee-1.0.0-rc4/Contents/Home/jre/languages/python/lib- で) python/3/importlib/_bootstrap.py:968:31701-31738) _gcd_import(../../../../../Library/Java/JavaVirtualMachines/graalvm-ee-1.0.0-rc4/で) Contents/Home/jre/languages/python/lib-python/3/importlib/_bootstrap.py:985:32285-32317) で インポート(../../../../../Library/Java/JavaVirtualMachines/graalvm-ee-1.0.0-rc4/Contents/Home/jre/languages/python/lib-python/3/importlib /_bootstrap.py:1066:35366-35382) で (../../../../../Library/Java/JavaVirtualMachines/graalvm-ee-1.0.0-rc4/Contents/Home/jre/言語/python/lib-graalpython/ builtins_patches.py:48:2220-2224) で org.graalvm.polyglot.Context.eval(Context.java:313) で Bolt.tests.BoltEngineGraalTest.helloWorldPythonTest(BoltEngineGraalTest.java:66) で sun.reflect.NativeMethodAccessorImpl.invoke0( Native Method) で sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) で java.lang.reflect.Method.invoke(Method.java:498) でorg.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) で org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) で org.junit.runners.model. FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) org.junit.internal.org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) の runners.statements.RunBefores.evaluate(RunBefores.java:26) org.junit.runners.ParentRunner.runLeaf(ParentRunner.java: 325) org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) で org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) で org.junit.runners.ParentRunner$3.run(ParentRunner. java:290) org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) で org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) で org.junit.runners.ParentRunner.access$000 (ParentRunner.java:58) org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) org.junit.runners.ParentRunner.run(ParentRunner.java:363) org.eclipse.jdt.internal .junit4.runner.org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) の JUnit4TestReference.run(JUnit4TestReference.java:86) org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests( RemoteTestRunner.java:538) の org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760) の org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java: 460) org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206) 元の内部エラー: java.lang.SecurityException: 操作は許可されていません: /code/polyglot-test at com. oracle.truffle.api.vm.FileSystems$DeniedIOFileSystem.forbidden(FileSystems.java:489) at com.oracle.truffle.api.vm.FileSystems$DeniedIOFileSystem.checkAccess(FileSystems.java:367) ...run(JUnit4TestReference.java:86) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner. java:538) org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760) で org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460) でorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206) 元の内部エラー: java.lang.SecurityException: 操作は許可されていません: com.oracle の /code/polyglot-test。 truffle.api.vm.FileSystems$DeniedIOFileSystem.forbidden(FileSystems.java:489) com.oracle.truffle.api.vm.FileSystems$DeniedIOFileSystem.checkAccess(FileSystems.java:367) ...run(JUnit4TestReference.java:86) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner. java:538) org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760) で org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460) でorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206) 元の内部エラー: java.lang.SecurityException: 操作は許可されていません: com.oracle の /code/polyglot-test。 truffle.api.vm.FileSystems$DeniedIOFileSystem.forbidden(FileSystems.java:489) com.oracle.truffle.api.vm.FileSystems$DeniedIOFileSystem.checkAccess(FileSystems.java:367) ...org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538) の TestExecution.run(TestExecution.java:38) org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests( RemoteTestRunner.java:760) の org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460) の org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java: 206) 元の内部エラー: java.lang.SecurityException: Operation is not allowed for: /code/polyglot-test at com.oracle.truffle.api.vm.FileSystems$DeniedIOFileSystem.forbidden(FileSystems.java:489) at com. oracle.truffle.api.vm.FileSystems$DeniedIOFileSystem.checkAccess(FileSystems.java:367) ...org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538) の TestExecution.run(TestExecution.java:38) org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests( RemoteTestRunner.java:760) の org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460) の org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java: 206) 元の内部エラー: java.lang.SecurityException: Operation is not allowed for: /code/polyglot-test at com.oracle.truffle.api.vm.FileSystems$DeniedIOFileSystem.forbidden(FileSystems.java:489) at com. oracle.truffle.api.vm.FileSystems$DeniedIOFileSystem.checkAccess(FileSystems.java:367) ...538) org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760) で org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460) で org .eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206) 元の内部エラー: java.lang.SecurityException: 操作は許可されていません: com.oracle.truffle の /code/polyglot-test。 api.vm.FileSystems$DeniedIOFileSystem.forbidden(FileSystems.java:489) at com.oracle.truffle.api.vm.FileSystems$DeniedIOFileSystem.checkAccess(FileSystems.java:367) ...538) org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760) で org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460) で org .eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206) 元の内部エラー: java.lang.SecurityException: 操作は許可されていません: com.oracle.truffle の /code/polyglot-test。 api.vm.FileSystems$DeniedIOFileSystem.forbidden(FileSystems.java:489) at com.oracle.truffle.api.vm.FileSystems$DeniedIOFileSystem.checkAccess(FileSystems.java:367) ...main(RemoteTestRunner.java:206) 元の内部エラー: java.lang.SecurityException: Operation is not allowed for: /code/polyglot-test at com.oracle.truffle.api.vm.FileSystems$DeniedIOFileSystem.forbidden(FileSystems.java :489) com.oracle.truffle.api.vm.FileSystems$DeniedIOFileSystem.checkAccess(FileSystems.java:367) で ...main(RemoteTestRunner.java:206) 元の内部エラー: java.lang.SecurityException: Operation is not allowed for: /code/polyglot-test at com.oracle.truffle.api.vm.FileSystems$DeniedIOFileSystem.forbidden(FileSystems.java :489) com.oracle.truffle.api.vm.FileSystems$DeniedIOFileSystem.checkAccess(FileSystems.java:367) で ...