Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nextのリリースについて #720

Open
FineArchs opened this issue Jul 16, 2024 · 11 comments
Open

Nextのリリースについて #720

FineArchs opened this issue Jul 16, 2024 · 11 comments

Comments

@FineArchs
Copy link
Member

FineArchs commented Jul 16, 2024

#716 でも触れた通り、次のリリースをnextのリリースにしたいと考えています。

  • この点に異存がある場合はこのissueにお願いします。

nextのリリースをする上で、次のような過程をとりたいと考えています。

  • AiScript Next #442 をマージし、現在のaiscript-nextブランチをmasterに合流させる。
  • publish-nightlyはnextを削除するのではなく、nextのブランチが無ければ停止するように改変する
  • nextはバージョン1.0.0としてリリースする。
  • リリース後、再びaiscript-nextブランチを作る。すなわち、今後aiscript-nextはメジャーアップデート用ブランチとして運用する

これらの点に疑問などがある場合、また他に決めたほうがいいことがある場合はお願いします。

@FineArchs
Copy link
Member Author

Changes

  • 新しいAiScriptパーサーを実装
    • スペースの厳密さが緩和
    • Breaking Change 改行トークンを導入。改行の扱いが今までより厳密になりました。改行することができる部分以外では文法エラーになります。
  • 文字列リテラルやテンプレートで、\とそれに続く1文字は全てエスケープシーケンスとして扱われるように
  • 文法エラーの表示を改善。理由を詳細に表示するように。
  • 複数行のコメントがある時に文法エラーの表示行数がずれる問題を解消しました。
  • 実行時エラーの発生位置が表示されるように。
  • Breaking Change パースの都合によりmatch文の構文を変更。パターンの前にcaseキーワードが必要となり、*defaultに変更。
  • Breaking Change 多くの予約語を追加。これまで変数名等に使えていた名前に影響が出る可能性があります。
  • Breaking Change 配列及び関数の引数において、空白区切りが使用できなくなりました。,または改行が必要です。
  • Breaking Change 関数同士の比較の実装
  • Breaking Change +!などの演算子の優先順位に変更があります。新しい順序はsyntax.mdを参照して下さい。
  • Breaking Change 組み込み関数Num:to_hexは組み込みプロパティnum#to_hexに移動しました。
  • Breaking Change arr.sortを安定ソートに変更
  • while文とdo-while文を追加
  • 省略可能引数と初期値付き引数を追加。引数名に?を後置することでその引数は省略可能となります。引数に=<式>を後置すると引数に初期値を設定できます。省略可能引数は初期値nullの引数と同等です。
    • BREAKING: いずれでもない引数が省略されると即時エラーとなるようになりました。

@salano-ym
Copy link
Member

nextはバージョン1.0.0としてリリースする。

正式リリースのような印象を与えるのでそのつもりが無いなら違う方がいいかも?

@syuilo
Copy link
Collaborator

syuilo commented Jul 18, 2024

まあこの際正式リリースということでも良いかもしらん

@FineArchs
Copy link
Member Author

AiScriptはすでに後方互換性を気にする段階に入っていますし、正式リリースを遅らせる理由はないと考えています。

非破壊的変更でマイナーバージョン、破壊的変更でメジャーバージョンを上げるsemver本来の仕組みに則りたいので、nextをもって1.0.0にしたいと思っています。

@syuilo
Copy link
Collaborator

syuilo commented Jul 18, 2024

semver的には、メジャーバージョンが 0 の場合はマイナーバージョンが破壊的変更を示すものになるわね
だから 0.20.0 でもsemver的には問題ない

Major version zero (0.y.z) is for initial development. Anything MAY change at any time. The public API SHOULD NOT be considered stable.

@FineArchs
Copy link
Member Author

その文章はつまり0.x.yのxとyいずれを変更しても破壊的変更とみなされるということだと思いますので、非破壊的変更を示せないという点で不便さが出るのではないかと考えています。
あとはマイナーチェンジとbugfixの違いを示せないというのもあります。

@salano-ym
Copy link
Member

next制度もあって安定してきてるので1.0.0でも問題なさそうですね

@FineArchs
Copy link
Member Author

反対がなさそうなので、この方向で進めて行きたいと思います。

@syuilo
Copy link
Collaborator

syuilo commented Jul 29, 2024

関数同士の比較の実装

これどんなんだっけ

@FineArchs
Copy link
Member Author

#537
これですね。
関数同士を==で比較した際、これまでは常にfalseを返していたのを、参照比較を返すようにしたものです。

@FineArchs
Copy link
Member Author

これから先の作業が楽になりそうという理由でaiscript-nextブランチを早めに合流させましたが、その際の挙動を勘違いしており、誤って既存のnext向けPRが閉じられてしまいました。
閉じられたPRは以下の3つです。

ご迷惑をお掛けしてすみません。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants