メインコンテンツまでスキップ
バージョン: 0.2.0 snapshot

標準ライブラリ

Dicks 0.2 の配布スナップショットには 11 個の公式パッケージがあります。各パッケージは独立したリポジトリで管理し、取り込むコミットを固定します。関数一覧と正確なバージョンは 公式パッケージ一覧 を参照してください。標準関数の実装も .dicks からコンパイルし、DaaS と同じ検査を通します。

{
"dependencies": {
"@dicks/http": {"builtin": "http"},
"@dicks/validation": {"builtin": "validation"}
},
"modules": {
"app": {
"source": "main.dicks",
"imports": {
"10": {"from": "@dicks/http", "name": "json"},
"11": {"from": "@dicks/validation", "name": "integer"}
}
}
}
}

実際のプロジェクトでは name, entry なども必要です。モジュールの説明を参照してください。依存は推移的に解決され、dicks lock でファイルごとのハッシュを固定します。

パッケージ公開関数・役割
@dicks/core共通の List / Result 型、検査付き JSON・文字列ホスト境界
@dicks/mathmin, max, clamp, between, abs, sign, divide, remainder, add
@dicks/collectionssum, firstInt, firstText, lastInt, lastText, containsInt, containsText, sliceInts
@dicks/jsonobject0 … object4, getText, getInt, getBool, arrayLength, integer, encode
@dicks/textrepeat, join, nonEmpty, parseInt, isDigits, utf8Bytes, startsWith, slice
@dicks/httpresponse, json, error, text, empty, header, query, withHeader, withStatus, redirect, method, path, isSuccess, matches
@dicks/validationinteger, required, maxBytes, oneOf, range
@dicks/randomuniform:供給された u32 列から剰余の偏りを避けて整数を選ぶ
@dicks/testingequalInt, equalText, equalBool, isTrue, isFalse, okInt, errInt
@dicks/cloudflareWorkers Request/Response、D1、環境変数、乱数、時刻、HTTP、リソース、ログ
@dicks/discordGateway、コマンド、データ取得、REST、定期タスク。詳細は Discord bots

契約​

関数の完全な引数・戻り値型は各 library.dicks の関数ヘッダと package.json の export 表が正です。代表例:

関数スタック上の引数 → 戻り値
math.add / divide / remainderInt Int → Result<Int,Text>
math.absInt → Result<Int,Text>
math.clampvalue min max → Result<Int,Text>
validation.integerText min max → Result<Int,Text>
text.parseIntText → Result<Int,Text>
http.jsonJson status → HttpResponse
http.errordetail status → HttpResponse
http.queryHttpRequest name → Result<Text,Text>
random.uniformList<Int> cursor min max → nextCursor Result<Int,Text>
collections.sliceIntsList<Int> start count → Result<List<Int>,Text>
  • 整数は符号付き 64 bit。加算オーバーフロー、ゼロ除算、最小値の絶対値、範囲不正は Result のエラーです。
  • JSON 整数は ±9,007,199,254,740,991 以内。型不一致を数値へ強制変換しません。
  • text.parseInt は符号つき 10 進整数だけを受け付けます。小数、空白、64 bit 範囲外はエラーです。
  • text.repeat は最大 4096 回、join は最大 64 要素、出力は UTF-8 で 65536 bytes まで。sliceInts の最大 count は 4096。通常の実行 fuel とメモリ上限も適用されます。
  • uniform は両端を含み、0 … 2³²−1 の範囲です。1 回につき最大 64 語を検査します。語の範囲不正や枯渇はエラー。暗黙に弱い乱数へ切り替えません。暗号学的な乱数源は Cloudflare ホスト側から供給します。
  • http.header のキーは Request 境界で小文字に正規化されています。見つからなければ空文字。query は Result で欠落を区別します。
  • testing の失敗は assertion trap になり、CLI は非ゼロで終了します。

境界値・エラー・日本語/非 BMP 文字を含む 31 シナリオを、TypeScript オラクルと Rust 出力の両方で実行します。ブートストラップ検証では Dicks 製コンパイラの stage 2 / stage 3 が同じコードを生成することも検査します。