S6RT-系统原型设计稿
4b5ent1 opened this issue · comments
关于脚本语言的同质化、代码互译,以及运行时共享的一些想法
ref: program-in-chinese/overview#75
语法设计
注:这里的语法是过渡阶段的专用语法,又称过渡PL(GDPL)。
主要参照: Mathematica,K,TypeScript,erlang,Rust
- Symbolic[main: Mathematica/WolframAlpha 80% - APL/J/K/Kdb+/Q 20%
- C-like: Julia+Python3.5 40% - Haxe/TypeScript 60%
- Symbolic/Logic/FP: prolog/erlang/Elixir 70% - Rust 30%
- Java-style: .Net Core/C# 35% - JVM/Kotlin 35% - Else25%:Perl6/正则 15%,Forth 10%
平台规范:
- python:语法兼容3.4.4,库兼容3.5(兼容pypy),3.5以上为DLC
- Node:TypeScript3.0 % XP: nodejs/node#3804
- erlang:语法兼容OTP17.5,平台以OTP21为准
- .Net Core:语法以2.x为准,3.x再说
- *Rust:1.2x即可 % XP: rust-lang/rust#26601
备注:只有Python和erlang需要考虑支持Windows XP[NT5.2],Node/Rust/.Net不需要考虑兼容。
调度机制
注:这里的运行时不是S6RT最终运行时,也是过渡阶段的衍生物。
简称平面运行时(PRT=pale/plain runtimte)
Core:[Python Erlang .Net Core ]+Relay:[Rust Node JVM] - call-> s6rt
<-> Base[ J{Kdb+/q}, Rust, TypeScript/Node, erlang/BEAM, .Net Core, JVM/Kotlin ]
+Ext[Perl Lua Julia PHP C++/Qt Forth]
注:先写PL并不是说要先实现PL,而是因为在中文编程讨论组里先顺便想到了而已。先实现的肯定还是DSL输入法。设计稿的顺序前半部分刚好跟实现顺序是反过来的,所以分段reverse就是实际顺序了。
设计稿:后期补全顺序
part1:GDPL / PRT;part2:第三硬件抽象层HAL3,空间I/O(solid/space IO=sio);
part3:输入法s6k;part4/协议规范:信息流,数据阵列;
part5:三元文/C3,一元二次言/L1R2[lang1rank2],二元语/P2[plain2],三元语/D3[dimension3];
part5:通用运行时SRT
注2:PRT的P应该是plain/programming?哦上面写了。是plain/pale
现阶段的实现顺序是:part3:s6k,part1:GDPL/ld2;s6k中期,要实现vscode插件移植