電柱商事

CHANGELOG v0.30.0

2019/08/01

[原文]

言語仕様

[破壊的変更] 抽象メソッドは返り値の型を明示しなければならなくなった(#7956#7999#8010

[破壊的変更] 複数行にまたがった範囲リテラルは使用できなくなった(#7888

マクロ

Annotations 型に argsnamed_args マクロメソッドを追加(#7694

利便性向上のため、TypePath における resolvetypes マクロメソッドのAPIを統一(#7970

標準ライブラリ

[破壊的変更] ダングリングポインタ問題を解決するため、UUID#to_slice を無くし UUID#bytes を追加(#7901

[性能改善] 参照型の Box を改善. (#8016

Random::ISAAC の初期シードを修正(#7977

aarch64 に固有のメモリ問題を修正(#7983

Benchmark.memory を追加(#7835

StringPool にデフォルトのキャパシティを設定(#7899

INI 型の各種メソッドに型制約を追加(#7831

Logger のドキュメントを修正(#7898

複数箇所のサンプルコードを修正(#8003

数値

不正確な Int#% オーバーフローを修正. (#7980

Float#to_s に合わせて小数部をもなたない場合も BigFloat#to_s が常に .0 を追加するよう変更(#7982

テキスト

ユニコード代替文字の範囲生成を修正(#7924

Collections

Enumerable#tally を追加(#7921

Enumerable#reduce? に初期値を持たない場合のオーバーロードを追加(#7941

Enumerable#min_by? のスペックを修正(#7919

Serialization

[破壊的変更] JSON: トークンやパーサの種別に Symbol 型でなく専用の Enum 型を使用するよう変更(#7966

YAMLのマッピングで値を String 型を含むユニオン型として解釈する場合に、String 型を最後に評価するよう変更(#7938

class Foo
  YAML.mapping(
    bar: String?
  )
end
bar: null

みたいな時に nullNil型(nil) ではなく String 型("null")として解釈されてしまうのを抑止するため。

XML::Builder の要素名のバリデーションを行うよう変更(#7965

JSONで数値のキーを許可(#7944

YAML::Builder 型と YAML::Nodes::Builder 型に、aliasmerge メソッドを追加(#7949

ファイル

シンボリックリンクを作成する File.symlink に対して、シンボリックリンク先のパスを取得する File.readlink が追加された。

ネットワーク

[破壊的変更] URLエンコードを強化。URI.escapeURI.unescape は、それぞれ URI.encode_www_formURI.decode_www_form へ名称変更され、URI.encodeURI.decode を追加(#7997#8021

[性能改善] HTTPプロトコルのパースを最適化(#8002#8009

HTTP::Server の応答が二重に閉じられるのを修正(#7908

HTTP::Clienthost 引数が、(パスやポート番号、認証情報などを含まない)ホスト名だけを受け取るように変更(#7958

HTTP::Params.encode で1つのキーに対して配列を渡して複数の値をエンコードできるようになった(#7862

SSLソケットの read_timeoutwrite_timeout を使用するソケットに移譲 (#7820

IO::Buffered のバッファサイズを設定可能に(#7930

暗号化

pkcs5 を使用する際に openssl/algorithm を requirie (#7985

OpenSSL::SSL::Socket のスペック中で、cipherの想定を修正(#7871

並行処理

OpenBSD の sysconf コールを修正(#7879

システム

System::UserSystem::Group を導入(#7725

Process::Status.exit_status のドキュメントを追加(#7873#8014

コンパイラ

pointer.as(Nil) のコード生成を修正(#8019

パーサと文字列化に関するいくつかのエッジケースを修正(#7886

仮想のメタクラスとモジュールのために concrete_types を修正(#7951

TypeDefTyperemove_indirection が不正だったのを修正(#7971

欠けていた CRYSTAL_SPEC_COMPILER_FLAGS の使用法をスペックに追加()

コンパイルエラーの出力を刷新(#7748

LLVM 8 のサポートを追加(#7987

LLVM 7 のサポートを追加(#7986

コード生成時のデバッグログヘルパ関数を追加(#7935#7937

ユニオン型のコード生成をリファクタ(#7940

LLVMIdCodeGenVisitor から Program へ移動 (#7973

LLVM コード生成に関するマイナーな追加(#7972

bin/check-compiler-flag ヘルパスクリプトと、 make clean_cache の追加()

セマンティクス

ジェネリックメタクラスの引数展開を修正(#7916

トップレベルのプライベート定数をスコープに含まれないよう修正(#7907

Enum のメンバの値を制定した際にオーバーフローすることがあったのを修正(#7881

ジェネリック型の注釈検索を修正 (#7891

ツール

フォーマッタ

トップレベルのインラインマクロを整形できるようになった (#7889#7992

ドキュメント生成

ドキュメントコメントのない項目にも注釈タグを表示できるようになった(#7952

その他

CI に 0.29.0 を使用するよう変更(#7863

スナップショットの公開を自動化(#7893

darwin で公式パッケージ版の LLVM 6.0.1 を使用するよう変更#7994