Hello, World!
まずは挨拶を出します。ソースに使えるのは 8 = D ~ と空白だけ。
8================D
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8===D
出力:
Hello, World!
最初の行で空の文字列を作り、続く行で1文字ずつ追加し、最後の 8===D で出力します。= が16個なら文字列の作成、17個なら文字の追加。追加する文字は ~ の個数(Unicodeコードポイント)で指定します。たとえば H は72個です。
長く見えるのは仕様です。言語サイトの実行欄 へ貼り付けて、結果を確かめてください。
まずブラウザで
言語サイト のエディターで実行できます。Dicks 自身で書かれたコンパイラを Web Worker 内で動かします。ソースの外部送信、ネットワーク呼び出し、DBへのアクセスはありません。コンパイラのファイルは最初にダウンロードします。
⌘ + Enter または Ctrl + Enter で実行。長い処理は同じボタンで中断できます。生成した JavaScript は保存できます。保存するコードにも AGPL が適用されます。
手元で使う
Node.js と Rust を用意し、ソース一式を展開します。検証済みのコンパイラを初回に作ります。詳しいバージョン・手順は 導入 と ツール にあります。
npm ci
node bin/dicks toolchain
node bin/dicks init ../hello
node bin/dicks --project ../hello run
dicks を PATH に置いた環境では node bin/dicks を dicks と書けます。まだ公開インストーラーや自動アップデーターはありません。
次は足し算
8=D~~
8=D~~~
8==D
8===D
上から「2を積む」「3を積む」「足す」「出力する」。結果は 5 です。整数は符号付き64ビットで、型が合わない演算やオーバーフローはエラーになります。
ファイルを分ける
.dicks は処理、dicks.json はファイル名・公開する関数・依存関係などの宣言です。関数IDはモジュールごとに独立します。リンク時に再配置されるため、別ファイルで同じIDを使えます。公開していない関数は外から呼べません。
作成したプロジェクトの main.dicks と lib.dicks が最小例です。複数ファイル で imports / exports を確認してください。
ライブラリを足す
dicks add @dicks/math@0.2.1
dicks sync
dicks run
バージョンは完全一致で指定します。ダウンロードした全ファイルを SHA-256 で検証し、dicks.lock に固定します。インストールスクリプトは実行しません。検証済みのキャッシュがあればオフラインでも同期できます。レジストリ と 標準ライブラリ も参照してください。
まだできないこと
言語はまだ 0.x です。再帰、浮動小数の算術、バージョン範囲の依存解決には対応していません。言語サイトの実行欄は単一ソース・出力のみです。画面を作るアプリは browserターゲット、HTTP・DB・認証は CLI と Cloudflare 用アダプターで構築します。