インストール¶
このガイドでは、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 のクラス共有メッセージが
表示されます。アーカイブが使われない理由はこれで分かります。
コンソールの文字コード(Windows)¶
Windows では、onion・onionc・onion repl・プロジェクトコマンドは、出力先が Windows の
コンソールでないとき(パイプ、ファイル、Git Bash の mintty のような端末)に、出力と診断を
UTF-8 で書き出します。本物のコンソール(cmd.exe、PowerShell、Windows Terminal、VS Code の
ターミナル)では、そのコンソール自身のコードページのままにします。コンソールはそれを正しく
表示できるからです。stdout と stderr は別々に判定するので、onion script.on > out.txt では
ファイルには UTF-8 が書かれ、コンソールに出る診断も読めるままです。他のプラットフォームでは
何も変わりません。ソースファイルは -encoding を指定しない限り UTF-8 として読みます。
標準入力も同じ規則に従います。IO::readLine などの IO の読み込み関数は、パイプやファイルを
UTF-8 として(echo 日本語 | onion script.on)、Windows のコンソールはそのコードページとして
デコードします。JDK 17 でも JDK 18 以降でも同じです。他のプラットフォームでは、JDK 18 以降が
すでにそうだったように標準入力を UTF-8 として読みます。onion.Files と file"…" は、
プラットフォームの文字コードにかかわらず、テキストを常に UTF-8 で読み書きします。それ以外の
文字コードには Files::readText/writeText に java.nio.charset.Charset を渡します。
ONION_CONSOLE_ENCODING でこの選択を上書きできます。
ONION_CONSOLE_ENCODING=utf-8 onion script.on # コンソールも含め常に UTF-8(全 OS)
ONION_CONSOLE_ENCODING=native onion script.on # 従来どおり JVM に任せる
未設定または auto のときは上に書いた動作です。それ以外の文字コードに固定したいときは、
native と JVM 自身のフラグを ONION_JAVA_OPTS で組み合わせます。JDK 19 以降は
-Dstdout.encoding=... と -Dstderr.encoding=...、JDK 17・18 は -Dsun.stdout.encoding=... と
-Dsun.stderr.encoding=... です。標準入力は -Donion.stdin.encoding=... で固定でき、
ランチャは指定された値をそのまま使います。native のときの標準入力は、従来どおり 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プログラムを書く
- クイックスタートガイド - 基本機能を学ぶ