- WSOFT Docs
- ブログ
- 共同作成ガイド
-
製品
- 製品
- PCMX
- WSOFTアカウント
- AliceScript
- AliceScript
- 謝辞
- ダウンロード
- Alice(キャラクター)
- AliceScriptのツアー
- Wikiの概要
- APIブラウザー
- APIブラウザー
- Alice
- break
- continue
- delay
- do
- exit
- for
- foreach
- function
- if
- import
- include
- lock
- read
- return
- string_format
- switch
- using
- while
- write
- Diagnostics
- Environment
- env_clr_version
- env_commandLine
- env_commandLineArgs
- env_set_exitCode
- env_expand_environmentVariables
- env_get_environmentVariable
- env_hasShutdownStarted
- env_impl_architecture
- env_impl_location
- env_impl_name
- env_impl_target
- env_impl_version
- env_Is64BitOperatingSystem
- env_Is64BitProcess
- env_MachineName
- env_NewLine
- env_os_platform
- env_os_version
- env_set_environmentVariable
- Exception
- Interpreter
- gc_collect
- gc_collectAfterExecute
- gc_getTotalMemory
- interpreter_append_output
- interpreter_append_output
- interpreter_consts
- interpreter_namespaces
- interpreter_getVariable
- interpreter_globalVariables
- interpreter_name
- interpreter_nameexists
- interpreter_namespaces
- interpreter_process
- interpreter_processfile
- interpreter_reset_variables
- Type
- Math
- math_abs
- math_acos
- math_acosh
- math_atan
- math_atan2
- math_atanh
- math_bitdecrement
- math_bitincrement
- math_cbrt
- math_celling
- math_clamp
- math_copysign
- math_cos
- math_cosh
- math_e
- math_exp
- math_factorial
- math_floor
- math_fusedmultiplyadd
- math_isFinite
- math_isInfinity
- math_isNaN
- math_isNegativeInfinity
- math_isNormal
- math_isPositiveInfinity
- math_isprime
- math_isSubNormal
- math_max
- math_min
- math_pi
- math_pow
- math_round
- math_sin
- math_sinh
- math_sqrt
- math_tan
- math_tanh
- math_tau
- math_truncate
- Net
- Parsing
- Random
- Security
- Threading
- Array
- Bool
- Bytes
- Delegate
- None
- Number
- String
- string
- CompareTo
- Contains
- EndsWith
- Equals
- Format
- GetBytes
- Indent
- IndexOf
- Insert
- IsEmptyOrNull
- IsEmptyOrWhiteSpace
- IsNormalized
- Join
- LastIndexOf
- Normalize
- PadCenter
- PadLeft
- PadRight
- Remove
- RemoveAt
- Repeat
- Replace
- ReplaceLineEndings
- Split
- SplitLines
- StartsWith
- SubString
- ToLower
- ToLowerInvariant
- ToUpper
- ToUpperInvariant
- Trim
- Trim
- TrimStart
- Variable
- 変更履歴
- 例外
- 例外
- 0x000 NONE
- 0x001 COULDNT_FIND_FUNCTION
- 0x003 INVALID_OPERAND
- 0x004 COULDNT_FIND_VARIABLE
- 0x005 ITS_RESERVED_NAME
- 0x006 ILLEGAL_IDENTIFIER
- 0x009 INCOMPLETE_ARGUMENTS
- 0x01a COULDNT_ADD_PARAMETERS_AFTER_PARMS_KEYWORD
- 0x020 COULDNT_EXECUTE_BLOCK
- 0x021 NEED_BRACKETS
- 0x022 UNNEED_TO_BRACKETS
- 0x04a CASE_BLOCK_MISSING_BREAK
- 0x04b UNKNOWN_ESCAPE_CHAR
- 基本
- Alice in Discord
- 相互運用
- チュートリアル
- ダウンロードセンター
- ほめて.ws
- アイコンメーカー
- WSOFTScript
- Unidet
- WebSailing
- WSNET
- WSTodon
- WSTube
- Lantana
- 法的資料
-
あみうは
- あみうは
- 新学期が始まりました!
- 恋の相談
- プチコン3号で作ったのは?
- オススメの文庫
- マクドナルド最高!
- ios11β レビュー
- あみうはの歌について
- ついに自分のソフトウェアのホームページができました。
- Windowsタブレットをリセットして起動しなくなった人のために
- PCレスで YouTubeの曲を携帯mp3プレイヤーで聴く(iPhone)
- 食べられないラズベリーパイを買いました。(1)
- ラズベリーパイの下ごしらえ(2)
- 小説始めます~
- 女子がキュンとくる行動ベスト3!!
- MacとWindowsについてあまり知られていない事
- macでできる裏技
- ドコモの格安スマホ「MONO」買っちゃいました☆いい所をいくつか
- 『レビュー』iPhone6sを1年間使い続けて思ったこと
- iPhoneの拡大鏡に関するバクを発見しました。
- iPhoneで圧縮ファイルを作成したり解凍する方法
- Obscura2が今だけ無料!使い方まとめ
- Windowsタブレットがブルースクリーンになった時のメモ
- お知らせ
互換性に影響を与える変更点
この記事では、AliceScriptで採用されているか、検討されている互換性に影響を与える変更点について説明します。
AliceScriptの歴史を通じて、AliceScriptのバージョン間および異なる実装間で高いレベルの互換性を維持することに力が注がれてきました。 Alice2.0(およびSAIM2.0)以降のバージョンは、AliceScriptGMと比較すると新しい技術とみなすことができますが、念のためこの一覧にまとめています。 多くの開発者は、AliceScriptの異なる実装間の互換性とともに、AliceScriptの特定の実装のバージョン間についても高いレベルの互換性を期待します。 特に、以前のバージョンのAliceScript用に書かれたコードは、AliceScriptの新しいバージョンでもシームレスに動作することを期待します。 実際、多くの開発者は、新しくリリースされたAlice.RuntimeにあるAPIが、それらのAPIが導入された初めのバージョンとも互換性があると期待します。
この記事では、AliceScriptまたはAlice.RuntimeまたはAlicePackageに対して行われた変更の詳細と、それがアプリケーションの互換性に与える影響について説明します。変更は承認されているか非承認であるか、動作の予測や期待通りの動作の維持が不十分であると判断され、見送りされているか検討されているかのいずれかです。
Note
この記事は、AliceScriptの変更履歴として使用できるだけでなく、ライブラリ開発者はこれらの基準を使用して、複数のAliceScript実装やバージョンをターゲットとするライブラリの変更の目安になります。
Alice2.3での変更
Alice2.3の概要についてはAliceScript2.3の新機能を参照してください。
配列同士の+=
操作をマージから追加に変更
承認
AliceScript2.2以前のバージョンでは、配列同士の複合代入加算演算は左辺の配列に右辺の配列の要素をマージすることを表していました。しかし、AliceScript2.3で配列内に配列を含む多次元配列の形が明示的に認められたことから、この操作は他の型での演算と同じように左辺の配列の末尾に右辺の要素を追加することになりました。この変更は承認されました。
Alice2.2での変更
Alice2.2の概要についてはAliceScript2.2の新機能を参照してください。
global
キーワードをpublic
キーワードに変更
検討
AliceScript2.1以前のバージョンでは、他のスクリプトにまたがって使用できる変数や関数を定義するためにglobal
キーワードを使用していましたが、public
キーワードに変更されました。シンボルの定義などでこの影響が最小限に留まるよう検討しています。変更は一時的に承認されています。
デリゲート宣言省略文字_
を廃止
承認
AliceScript2.1以前のバージョンでは、デリゲートを宣言するときにdelegate
関数のエイリアスとして_
が使用できていました。これはWSOFTScriptとの互換性を向上するためにおかれた措置で、ラムダ式の機能が発展した現在では残しておく意味はありません。変更は承認されました。
Alice2.1での変更
Alice2.1の概要についてはAliceScript2.1の新機能を参照してください。
function_show関数の廃止
承認
AliceScript2以前のバージョンでは、ユーザー定義関数の内容を出力するfunction_show
関数がAlice.Interpreter
名前空間に存在していました。
しかし、この関数はほとんど言語のデバッグ目的にしか使用されておらず、かといって今後使用できるケースも想定できないため廃止されました。
.NETライブラリの多重起動の容認
承認
AliceScript2以前のバージョンでは、同一の.NETライブラリを複数回読み込むと、LIBRARY_ALREADY_LOADED
例外が発生していました。しかし、.NETライブラリを多重起動してももう影響はないため、この例外はスローされないようになりました。変更は承認されました。
ScheduleRun関連関数の廃止
承認
ScheduleRun
関連関数は、WSOFTScriptとの互換性を向上させる目的でAliceScriptに実装されていました。しかし、ScheduleRun
の機能は、最上位レベルのスクリプトを意図しないタイミングで実行されてしまう可能性があり、セキュリティ上も問題となっていました。AliceScript2.1では、この関数をサポートしないことにより、セキュリティが向上しました。変更は承認されました。
属性定義をキーワード定義へと移行
承認
AliceScript2以前のバージョンでは、関数や変数の定義時にfunction
やvar
キーワードの後にpublic
などの属性キーワードを記述していました。これは、FunctionCreatorやAssignmentFunctionが独自にこの機能を実装していたためです。AliceScript2.1では、前置詞的キーワードをインタプリタレベルでサポートすることで、記述の一貫性を担保できるうえ、キーワードの概念を他の関数でも使用できるようになるため、変更は承認されました。
#から始まる行のコメントに対応
承認
AliceScript2以前のバージョンでは、#
から始まるコメントに対応していませんでした。これにより、UNIX環境でのシバンと呼ばれるファイル関連付け機能に対応できませんでした。また、#
から始まるコメントをサポートすることによって、ini
ファイルやconf
ファイルとの互換性が向上します。変更は承認されました。
Alice2.0での変更
import関数の廃止
承認
AliceScriptGM以前のバージョンでは、Import関数はすでに展開されている名前空間を読み込むための関数と指摘のしていました。AliceScript2からは、using
ステートメントが使用できます。この変更はそれぞれのimport
関数をusing
ステートメントに読み替える必要がありますが、変更は承認されました。
AliceScriptGMでの変更
Typeプロパティ
承認
AliceScriptRC1以前のバージョンでは、Typeプロパティはその値の型を表す文字列表現を返していました。AliceScriptRC2からはTypeプロパティはtype型を返すため、戻り値の型が変わります。 この変更による影響を緩和するために、type型からstring型への一方向の暗黙的な変換が用意されているため、この変更は承認されました。
定義されていない変数への値の代入の禁止
承認
AliceScriptRC1以前のバージョンでは、定義されていない変数にもvarキーワードを使用しないで変数を定義することができました。これは未アクセスの変数に対して値が存在するか確認できないという潜在的な欠陥が存在しているため使用できなくなります。次は未定義の変数aに12345を代入し定義するコードです。AliceScriptRC1以前では動作していましたが今は動作しません。
ラムダ式の導入
承認
Alice2.0では、ラムダ式が導入されました。ラムダ式を使うと、デリゲートを簡潔に記述できます。たとえば、以下のような形式です。
AliceScriptRC2以降でこれと同じ動作を行うことができる唯一の方法は次の通りです。
変数を定義した後の代入に関する動作に変更はありません。この変更は承認されました。
暗黙的な型変換の廃止
承認
AliceScriptRC1以前のバージョンでは、関数などの対応する型が与えられた型ではない場合、自動的にその値を対応する型に変換します。これを暗黙的な型変換とよびますが、これは本来の用途に使用できない値などが与えられても例外が発生することなく予期しない動作をしてしまう可能性がありました。これを解消するために暗黙的な型変換は廃止されました。この変更は承認されました。
また、もうひとつの解決策として、引数の型指定を行うことも検討してください。
変数/関数のスコープ
承認
AliceScriptGM以前のバージョンでは、変数と関数、定数はすべてグローバルとして定義されていました。これは複数回同じファイルを実行する際に重複定義が発生してしまうおそれがあるなどの潜在的な欠陥を有していました。AliceScriptGMでは、スコープが導入され、そのスコープの範囲内で宣言された変数と関数、定数はいずれもその範囲外では使用できなくなりました。これはネストされたスコープに対しても有効です。この変更は承認されました。