- Fix: ã¡ã¿ããŒã¿æ§æã屿§ãAiSONã«ã©ãã«ä»ãã®åŒãèšè¿°ããŠããšã©ãŒãçºçããªãåé¡ãä¿®æ£
- Fix: åå空éå ã«ãããŠå±æ§ã®å€ãè©äŸ¡ãããªãåé¡ãä¿®æ£
- Fix: ååŒæ°ã§å®çŸ©ãããåã«ååŒæ°ãäžããŠããšã©ãŒãçºçããªãåé¡ãä¿®æ£
- Fix: 颿°ã®ååŒæ°ã®ååãéè€ããå Žåã«é©åãªãšã©ãŒãçºçããªãåé¡ãä¿®æ£
- Fix: 颿°ã®åŒæ°ãè¿ãå€ã«å泚éãç¡ããååŒæ°ã®ååãéè€ããå Žåã«ãšã©ãŒãçºçããªãåé¡ãä¿®æ£
- Fix: breakæã®ãã€å€ã®åŒã«ã€ããŠäžæ£ãªå€æ°ãreturnæãbreakæãcontinueæãåæ³šéãããå Žåã«ææ³ãšã©ãŒã«ãªããªãåé¡ãä¿®æ£
- Fix: åæ³šéã«ãããååŒæ°ã颿°åã®è¿ãå€ã«äžæ£ãªå泚éãããå Žåã«ææ³ãšã©ãŒã«ãªããªãåé¡ãä¿®æ£
- 颿°
Obj:from_kvsã远å - ããããã£ã¢ã¯ã»ã¹ã®ãããèšæ³ã«äºçŽèªãèšè¿°ã§ããããã«ãªããŸããã
- ããããã£ã¢ã¯ã»ã¹ã®ãããèšæ³ã«æååãªãã©ã«ãèšè¿°ã§ããããã«ãªããŸããã
- nullå€ã®ã¢ãµãŒã·ã§ã³é¢æ°ïŒ
isNull,assertNullïŒã远å ããŸããã AiSON.stringifyãå®è£ ããŸãããJSON.stringifyãšäºææ§ã®ããããã¡ã§åŒæ°ãåããŸãããJSON.stringifyã®ããã«AiSONã«çŽæ¥å€æã§ããªãå€ãå«ããªããžã§ã¯ããæž¡ãããšã¯ã§ããŸããã
- Fix: 颿°ã®åŒæ°ã®åæå€å ã«äžæ£ãªreturnæãããå Žåã«ææ³ãšã©ãŒã«ãªããªãåé¡ãä¿®æ£
- Fix: ãªããžã§ã¯ããªãã©ã«ã®ããããã£åã«äžéšã®äºçŽèªãèšè¿°ã§ããªãã£ãåé¡ãä¿®æ£
- ãªããžã§ã¯ããªãã©ã«ã®ããããã£åã«äºçŽèªãçŽæ¥èšè¿°ã§ããããã«ãªããŸããã
- Fix:
Math:gen_rngã®ã¢ã«ãŽãªãºãchacha20ããã³rc4ãéã»ãã¥ã¢ã³ã³ãã¯ã¹ãäžã§ã¯åäœããªãããããã®ãããªç°å¢äžã§ã¯options.algorithmã®ããã©ã«ããrc4_legacyã«å€æŽ
- æ°ãã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: ãããã§ããªãåŒæ°ãçç¥ããããšå³æãšã©ãŒãšãªãããã«ãªããŸããã
Date:parseãããŒã¹å€±ææã«ãšã©ãŒåã®å€ãè¿ãããã«- AiScriptã®ã¹ã¯ãªãããã¡ã€ã«ãè¡šãæ¡åŒµåã
.isãã.aisã«å€æŽãããŸããã - ãã¡ã€ã«å®è¡æ©èœã«ããèªã¿åããããã¡ã€ã«ã®ååã
test.isããmain.aisãžå€æŽãããŸããã - 颿°
Math:gen_rngã«ç¬¬äºåŒæ°algorithmããªãã·ã§ã³åŒæ°ãšããŠè¿œå ã- ã¢ã«ãŽãªãºã ã
chacha20ãrc4ãrc4_legacyããéžã¹ãããã«ãªããŸããã - Breaking Change
algorithmãæå®ããªãå Žåãchacha20ãéžæãããŸãã
- ã¢ã«ãŽãªãºã ã
- Fix: Breaking Change
Math:rndãç¯å²å€ã®å€ãè¿ãå¯èœæ§ãããã®ãã¢ã«ãŽãªãºã ã®å€æŽã«ããä¿®æ£ã - Breaking For Hosts: ææ§ãªåã倿ŽããŸãããïŒTypeScriptã®åã®ã¿ã®å€æŽã§ãããJavaScriptã®å€ãšããŠã¯å€æŽã¯ãããŸããïŒ
Interpreterã®ãªãã·ã§ã³ã®log颿°ã®åŒæ°ã®åAiScriptErrorã®infoã®åInterpreter.collectMetadataãvalToJsã®æ»ãå€ã®åNodeåã§ååšããªãããããã£ãŒã®åé€
- 颿°
Core:powãCore:divãMath:sqrtãäŸå€ãçºçããåé¡ãä¿®æ£ã0 / 0ã-1 ^ 0.5ãMath:sqrt(-1)ãNaNãè¿ãããã«ãªããŸããNaNã¯v != vã«ããæ€åºã§ããŸãã
- 倿°å®£èšïŒeachæã§ã®å®£èšãå«ãïŒãšé¢æ°ã®ä»®åŒæ°ã§åå²ä»£å ¥ãã§ããããã«ïŒåå空éå ã§ã¯åå²ä»£å ¥ã䜿çšãã宣èšã¯ã§ããŸãããïŒ
- For Hosts: Interpreterã®ãªãã·ã§ã³ã«
irqRateãširqSleepã远åirqRateã¯Interpreterã®å®æäŒæ¢ãäœã¹ãããã«äžåèµ·ããããæå®ããæ°å€irqSleepã¯äŒæ¢æéãããªç§ã§æå®ããæ°å€ããŸãã¯äŒæ¢ããšã«awaitãããPromiseãè¿ã颿°
- Breaking Change matchåŒã«ãããŠãcaseç¯ãšdefaultç¯ã®éã«åºåãæåãå¿ é ã«ãªããŸãããcaseç¯ã®åŸã«defaultç¯ãåºåãæåãªãã§ç¶ãããšææ³ãšã©ãŒã«ãªããŸãã
- Breaking Change ifåŒãmatchåŒãforæã®å 容ã1ã€ã®æã§ããå Žåã«ãã¹ã³ãŒããçæãããããã«ãªããŸããããããã®æ§æå ã§å®çŸ©ããã倿°ã¯å€éšããåç §ã§ããªããªããŸãã
- ã©ã³ã¿ã€ã ãšã©ãŒã«ã³ãŒã«ã¹ã¿ãã¯ã®æ å ±ã远å ã
- For Hosts: ããã€ãã®åã§ args ã params ã«ãªããŒã ããŸããã
- è€æ°ã®æ¹è¡ã1ã€ã®æ¹è¡ãšåçã«æ±ãããããã«ãªããŸãããæ¬¡ã«ç€ºãéšåã§è€æ°ã®æ¹è¡ãæ¿å
¥ã§ããŸãã
- 空ã®matchåŒã®æ³¢æ¬åŒ§å ããã³ãmatchåŒã®åcaseç¯ãdefaultç¯ã®ååŸ
- åŒæ°ã®ãªã颿°åŒã³åºãã®äžžæ¬åŒ§å ããã³ã颿°åŒã³åºãã®ååŒæ°ã®ååŸ
- åŒæ°ã®ãªã颿°å®çŸ©ã®äžžæ¬åŒ§å ããã³ã颿°å®çŸ©ã®ååŒæ°ã®ååŸ
- ifåŒã«ãããŠãthenç¯ãelifç¯ãelseç¯ã®é
- åé æŒç®ãäºé æŒç®ã«ãããŠãããã¯ã¹ã©ãã·ã¥ã®åŸ
- 倿°å®çŸ©ã«ãããŠãçå·ãšåŒã®é
- 屿§ãšæã®é
- ãã³ãã¬ãŒããªãã©ã«ã«æ³¢æ¬åŒ§ãå«ãåŒãåã蟌ãããšãã§ããããã«ãªããŸããã
- Breaking Change è€å代å
¥æ(
+=,-=)ã®å·ŠèŸºã1åã ãè©äŸ¡ãããããã«ãªããŸããã - For Hosts:
interpreter.pause()ã§å®è¡ã®äžæåæ¢ãã§ããããã«interpreter.unpause()ã§åé- åéåŸã«
Async:ç³»ã®åŸ ã¡æéããªã»ãããããäžå ·åããããŸãããä¿®æ£ã®ç®åŠã¯ç«ã£ãŠããŸãã
- ãã³ãã¬ãŒããªãã©ã«å ã«åã蟌ãŸããåŒã®å é ããã³æ«å°Ÿã®æ¹è¡ã蚱容ãããããã«ãªããŸããã
- åé
æŒç®åã®æ£å·
+ã»è² å·-ãæ°å€ãªãã©ã«ä»¥å€ã®åŒã«ã䜿çšã§ããããã«ãªããŸããã - 以äžã®å泚éãã§ããããã«ãªããŸããã
- 颿°å®£èšããã³é¢æ°åã§ã®ãžã§ããªã¯ã¹
- ãŠããªã³å
- errorå
- neverå
- 颿°
Obj:pickã远å - ãªããžã§ã¯ããªãã©ã«ã®ããŒã«æååãªãã©ã«ãèšè¿°ã§ããããã«ãªããŸããã
- returnæãbreakæãcontinueæã®æåã倿ŽãããŸããã
- Fix: evalåŒãifåŒå ã§returnæãããã¯breakæãcontinueæã䜿çšãããšäžæ£ãªå€ãåãåºããäžå ·åãä¿®æ£ããŸããã
- returnæã¯é¢æ°ã¹ã³ãŒãå ã§ãªããšææ³ãšã©ãŒã«ãªããŸãã
- ã©ãã«ãçç¥ãããbreakæããã³continueæã¯å埩åŠçæ(for, each, while, do-while, loop)ã®ã¹ã³ãŒãå ã§ãªããšææ³ãšã©ãŒã«ãªããŸãã
- returnæã¯åžžã«é¢æ°ããè±åºããŸãã
- ã©ãã«ãçç¥ãããbreakæã¯å¿ ãæãå åŽã®å埩åŠçæã®åŠçãäžæããã«ãŒãããè±åºããŸãã
- continueæã¯å¿ ãæãå åŽã®å埩åŠçæã®åŠçãäžæããã«ãŒãã®å é ã«æ»ããŸãã
- eval, if, match, loop, while, do-while, for, eachã«ã©ãã«ãä»ããŠbreakæãcontinueæã§æå®ãããããã¯ããè±åºã§ããããã«ãªããŸããeval, if, matchããè±åºããbreakæã«ã¯å€ãæå®ããããšãã§ããŸãã
- åå空éäžã®å€æ°å®çŸ©ã«å±æ§ãä»äžã§ããããã«ãªããŸããã
- syncçã¡ãœããã䜿çšããŠåæçã«å®è¡ã§ããããã«ãªããŸããã
- For Hosts: AiScriptã®ãªããžã§ã¯ãã®è¡šèšæ³ãå©çšããããŒã¿äº€æçšãã©ãŒããããAiScript Object Notation (AiSON)ãããã³ãã®ããŒãµãŒã远å ããŸããã
- çŸåšã
AiSON.parse()ïŒããŒã¹ããŠJavaScriptãªããžã§ã¯ãã«å€æããïŒã䜿çšã§ããŸãã - éåžžã®AiScriptãšç°ãªãã®ã¯ä»¥äžã®ç¹ã§ãïŒ
- ãªãã©ã«ã¯ãããã¬ãã«ã«ã²ãšã€ã ãããèš±å¯ãããŸããã
- åçãªåŒïŒé¢æ°ã»ãªããžã§ã¯ãã®valueã«å¯Ÿããåçãªãã€ã³ãã£ã³ã°ãªã©ïŒã¯èš±å¯ãããŸããã
- åå空éã»ã¡ã¿ããŒã¿ãªã©ããªãã©ã«ãšã³ã¡ã³ã以å€ããããã¬ãã«ã«æžãããšã¯èš±å¯ãããŠããŸããã
- çŸåšã
Date:yearç³»ã®é¢æ°ã«0ãæž¡ããšçŸåšæå»ã«ãªãåé¡ãä¿®æ£- ã·ã³ã¿ãã¯ã¹ãšã©ãŒãªã©ã®äœçœ®æ å ±ãä¿®æ£
arr.reduceã空é åã«å¯ŸããŠåæå€ãªãã§åŒã³åºãããæãæ£åŒã«ãšã©ãŒãåºãããstr.pad_start,str.pad_endã远åarr.insert,arr.removeã远åarr.sortã®åŠçãéåæçã«ããŠé«éåarr.flat,arr.flat_mapã远åUri:encode_full,Uri:encode_component,Uri:decode_full,Uri:decode_componentã远åstr.starts_with,str.ends_withã远åarr.spliceã远åarr.atã远å- For Hosts: ãšã©ãŒãã³ãã©äœ¿çšæãInterpreterã®ãªãã·ã§ã³ã§abortOnErrorãtrueã«ããæã®ã¿å šäœã®abortãè¡ãããã«
Core:abortã§ããã°ã©ã ãç·æ¥åæ¢ã§ããããã«index_ofã®é åçã远åstr.index_ofarr.index_ofå ±ã«ç¬¬ïŒåŒæ°fromIndexãåãä»ããããã«arr.inclã®åŒæ°ã®åå¶éã廿¢Date:millisecondã远åarr.fill,arr.repeat,Arr:createã远å- JavaScriptã®ããã«åå²ä»£å ¥ãã§ããããã«ïŒçŸæ®µéã§ã¯æ©èœã¯æå°éïŒ
- ã¹ã³ãŒãããã³ååãåäžã§ãã倿°ã宣èšãããéã®ãšã©ãŒã¡ãã»ãŒãžãä¿®æ£
- ãã¹ããããåå空éäžã®å€æ°ãåç §ã§ããããã«
arr.every,arr.someã远åDate:to_iso_strã远å
package.jsonãä¿®æ£Error:create颿°ã§ãšã©ãŒåã®å€ãçæã§ããããã«Obj:mergeã§ïŒã€ã®ãªããžã§ã¯ãã®äœµåãåŸãããããã«- Fix: ãã§ã€ã³ç³»ïŒã€ã³ããã¯ã¹ã¢ã¯ã»ã¹
[]ãããããã£ã¢ã¯ã»ã¹.ã颿°åŒã³åºã()ïŒãšæ¬åŒ§ãçµã¿åãããæã«äžæ£ãªæåããããã°ãä¿®æ£ - 颿°
Str#charcode_atStr#to_arrStr#to_char_arrStr#to_charcode_arrStr#to_utf8_byte_arrStr#to_unicode_codepoint_arrStr:from_unicode_codepointsStr:from_utf8_bytesã远å - Fix:
Str#codepoint_atããµãã²ãŒããã¢ã«å¯Ÿå¿ããŠããªãã®ãä¿®æ£ - é åã®ç¯å²å€ããã³éæŽæ°ã®ã€ã³ããã¯ã¹ãžã®ä»£å ¥ã§ãšã©ãŒãåºãããã«
ããŒãžã§ã³0.16.0ã«èšé²æŒãããããŸããã
- 颿°
Str:from_codepointStr#codepoint_atã远å
- ããŒã ã¹ããŒã¹ã®ãããã¬ãã«ã«
varã¯å®çŸ©ã§ããªããªããŸããã(letã¯å¯èœ) Core:to_str,ãã³ãã¬ãŒãæååã§ã©ã®å€ã§ãæååãžå€æã§ããããã«- æå®æéåŸ
æ©ãã颿°
Core:sleepã远å exists 倿°åã®æ§æã§å€æ°ãååšãããå€å®ã§ããããã«- ãªããžã§ã¯ããæ·»åã§åç
§ã§ããããã«ïŒ
object['index']ã®ããã«ïŒ - ããšã©ãŒåïŒ
errorïŒããå°å ¥ Json:parseãããŒã¹å€±ææã«ãšã©ãŒåã®å€ãè¿ãããã«letã§å®çŸ©ãã倿°ãäžæžãã§ããŠããŸãã®ãä¿®æ£- 颿°
Str:from_codepointStr#codepoint_atã远å
- Breaking Change AiScriptErrorã®ãµãã¯ã©ã¹ïŒçš®ã«AiScript-ã®æ¥é èŸã远å ïŒäŸïŒSyntaxErrorâAiScriptSyntaxErrorïŒ
- Interpreterã®ã³ã³ã¹ãã©ã¯ã¿ã®ç¬¬ïŒåŒæ°ã®èŠçŽ ã«
errïŒãšã©ãŒã³ãŒã«ããã¯ïŒãèšå®ã§ãããããã¯Interpreter.execã倱æããæã«å ããŠãAsync:intervalãAsync:timeoutã倱æããå Žåã«ãåŒã³åºãããã ãªãããããèšå®ããå Žåã¯äŸå€throwã¯çºçããªããªãã - ãã€ãã£ã颿°ã¯
opts.callã®ä»£ããã«opts.topCallãçšããããšã§äžèšïŒã€ã®ããã«ãšã©ãŒã³ãŒã«ããã¯ãåŒã³åºãããããã«ãå¿ èŠãªå Žåã«ã®ã¿äœ¿ãããšãåŸæ¥ãšã©ãŒãã£ããåºæ¥ãŠããã±ãŒã¹ã§ã¯åŒãç¶ãopts.callã䜿ãã
- Mathã匷å
&&,||æŒç®åã®é ãæ£ãã倿ãããªãå¯èœæ§ã®ãããã°ãä¿®æ£
&&,||ãç絡è©äŸ¡ãããªããã°ãä¿®æ£+=,-=æŒç®åã§é¢ä¿ã®ãªã倿°ãäžæžããããå¯èœæ§ã®ãããã°ãä¿®æ£
- ãªããžã§ã¯ãã®å€ãé
ååãã
Obj:valsã远å - æååã
Json:parseã§ããŒã¹å¯èœã§ããããå€å®ãã颿°Json:parsableã远å - or/andã®çµæã第äžåŒæ°ã§ç¢ºå®ããæã第äºåŒæ°ãè©äŸ¡ããªãããã«
- Fix immediate value check in Async:interval
- ä¹±æ°ãçæãããšãåŒæ°ã®æå€§å€ãæ»ãå€ã«å«ãããã«
Date:year,Date:month,Date:day,Date:hour,Date:minute,Date:secondã«æéæ°å€ã®åŒæ°ãæž¡ããŠæå»æå®å¯èœã«- array.sortãšStringçšæ¯èŒé¢æ°Str:lt, Str:gtã®è¿œå
- ä¹±æ°ãçæãããšãåŒæ°ã®æå€§å€ãæ»ãå€ã«å«ãããã«
- Json:stringifyã«é¢æ°ãæž¡ããšäžæ£ãªå€ãçæãããã®ãä¿®æ£
- é
åããããã£
map,filter,reduce,findã«æž¡ãã³ãŒã«ããã¯é¢æ°ãåãåãã€ã³ããã¯ã¹ã0å§ãŸãã« @Math:ceil(x: num): numã远å- åªä¹ã®
Core:powãšãã®ç³è¡£æ§æ^ - å°æ°ã®ããŒã¹ãä¿®æ£
- block comment
/* ... */ - Math:Infinity
- eachæã®äžã§breakãšreturnãåäœããªãåé¡ãä¿®æ£
- é åã®å¢çå€ã«ã¢ã¯ã»ã¹ããéã«IndexOutOfRangeãšã©ãŒãçºçãããããã«
- åŠå®æ§æ
! - ã€ã³ã¿ããªã¿åŠçé床ã®èª¿æŽ
- æååãã·ã³ã°ã«ã¯ã©ãŒãã§ãå®çŸ©å¯èœã«
- foræãloopæã®äžã§returnãåäœããªãåé¡ãä¿®æ£
- ç¡éã«ãŒãæã«ã©ã³ã¿ã€ã ãããªãŒãºããªãããã«
- 倿°å®çŸ©ã®
#âlet - 倿°å®çŸ©ã®
$âvar - 代å
¥ã®
<-â= - æ¯èŒã®
=â== &â&&|â||? ~ .? ~ .âif ~ elif ~ else? x { 42 => yes }âmatch x { 42 => true }yesnoâtruefalse_ânull<<âreturn~âfor~~âeach+ attributeName attributeValueâ#[attributeName attributeValue]- ççå€ã®
+/-è¡šèšæ¹æ³ã廿¢ - forãããã³eachã¯é åãè¿ããªããªããŸãã
- ãããã¯åŒã¯
{ }âeval { }ã« - é åã®ã€ã³ããã¯ã¹ã¯0å§ãŸãã«ãªããŸãã
- ããã€ãã®stdã«å«ãŸããã¡ãœããã¯ã察象ã®å€ã®ããããã£ãšããŠå©çšããããã«ãªããŸãããäŸ:
Str:to_num("123")->"123".to_num()Arr:len([1 2 3])->[1 2 3].len- etc
continuebreakloop
- 空ã®é¢æ°ãå®çŸ©ã§ããªãåé¡ãä¿®æ£
- 空ã®ã¹ã¯ãªãããèš±å¯ãããŠããªãåé¡ãä¿®æ£
- ããŒã ã¹ããŒã¹ä»ã倿°ã®ã€ã³ã¯ãªã¡ã³ãããã¯ãªã¡ã³ããä¿®æ£
- ããŒã ã¹ããŒã¹ä»ã倿°ãžã®ä»£å ¥ãã§ããªãåé¡ãä¿®æ£