インストール¶
このガイドでは、Onionプログラミング言語をシステムにインストールしてセットアップする方法を説明します。
前提条件¶
OnionはJVM上で動作し、以下が必要です:
- Java Development Kit (JDK) 17以降
- SBT (Scala Build Tool) - ソースからビルドする場合
インストール方法¶
方法1: ビルド済みバイナリをダウンロード(推奨)¶
- GitHubリリースページから最新リリースをダウンロード
- アーカイブを展開:
binディレクトリをPATHに追加:
方法2: ソースからビルド¶
-
リポジトリをクローン:
-
SBTでプロジェクトをビルド:
-
配布パッケージを作成:
これによりtarget/onion-dist.zipに配布用ZIPが作成されます
- または、スタンドアロンJARをビルド:
これにより現在の Scala 向け target ディレクトリ(現状は target/scala-3.3.7/)に onion.jar が作成されます
~/.local/binにコマンドを入れたい場合はローカル installer を実行:
インストールの確認¶
Onionが正しくインストールされたことを確認:
起動時間と JVM フラグ¶
Onion は実行のたびに JVM を起動し、その大半はコンパイラのクラスロードに費やされます。
AppCDS のアーカイブでクラスを共有すると、これがおよそ半分に
なります。JDK 25 での実測で、onion run/Hello.on が 0.73 秒から 0.38 秒になりました。
curl | sh のインストーラはアーカイブを自動で作ります。配布 zip から入れた場合は、展開後に
一度だけ次を実行してください。
onion.jar と同じ場所に lib/onion.jsa(約 15MB)が作られます。生成をランチャ経由にしている
のは意図的で、アーカイブは作成時と同じ classpath でしか使えないためです。Onion を更新したときや
JDK を切り替えたときは作り直してください。作り直すまでの間、JVM は古いアーカイブを黙って拒否し、
高速化なしで通常どおり動作します。
追加の JVM フラグは ONION_JAVA_OPTS で渡します。
ONION_JAVA_OPTS="-Xmx4g" onion big-job.on
ONION_JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005" onion script.on
ONION_DEBUG_STARTUP=1 を設定すると、ランチャが抑止している JVM のクラス共有メッセージが
表示されます。アーカイブが使われない理由はこれで分かります。
コンパイルデーモン¶
onionc は毎回 JVM を起動し、コンパイラを読み込み、JIT で温めてからようやくファイルを
コンパイルします。ONION_DAEMON=1 を設定すると、onionc はコマンドラインを常駐の
コンパイラプロセス(初回に自動起動、ユーザー・JDK・Onion のインストールごとに 1 つ)へ
渡し、その出力と終了コードを中継します。デーモンは温まったコンパイラを実行間で保持する
ので、典型的な 1 ファイルのコンパイルはずっと短い時間で終わります。
デーモンは 30 分仕事が無ければ自分で終了します。手動では java -cp onion.jar
onion.tools.daemon.DaemonClient stop(または status)で操作できます。待ち受けは自分
だけが読めるディレクトリ($XDG_RUNTIME_DIR または一時ディレクトリ。
ONION_DAEMON_SOCKET で上書き可)の Unix ドメインソケットで、Java 16 以降が必要です。
デーモンに到達・起動できないときは、onionc はこれまでどおりプロセス内でコンパイル
します。ONION_DAEMON_JAVA_OPTS はデーモン自身の JVM フラグです。onion script.on も
デーモンを使います。コンパイルはデーモンが行ってクラスを返し、プログラム自体はこれまで
どおり自分のプロセスで動きます。
IDEセットアップ¶
Visual Studio Code¶
公式のOnion拡張機能はまだありませんが、以下を使用できます:
- 類似言語用の汎用シンタックスハイライト
- 依存関係管理用のJava/Scala拡張機能
IntelliJ IDEA¶
Onionコンパイラ自体を開発する場合:
- Scalaプラグインをインストール
- プロジェクトをSBTプロジェクトとしてインポート
- IDEが自動的に依存関係をダウンロード
次のステップ¶
- Hello Worldチュートリアル - 最初のOnionプログラムを書く
- クイックスタートガイド - 基本機能を学ぶ