TTLang 兔兔语 ,是一门新的编程语言,他语法有点像typescript。
他是cpp的有力竞争对手(目标,非现实)
不负每一行代码,不负每一份热情
壬寅猫年,执意做回一个自由程序员。TTLang是猫年头等大事。
可能直接就ttlang v3了,原谅我v2没完成就天马行空到v3. 反正就是没完成的项目嘛,随时可以转变思路,哈哈。
修改原来只有一个ttc指令的布局为,分为 编译 和 runtime 两个部分。
一个ttlang 项目只会输出一种东西,就是 ttlang lib(库),他不提供各语言平台不同的部分。
一个ttlang lib就是一个压缩文件,可以包括若干json 和其它资源文件。
ttlang lib 内部保存的是含有语义的AST信息,而不是传统的字节码,这是为了在后续工作更好做。
可以是 a.解释执行(终极热更) b.透过 compiler JIT 或者AOT 去执行
ttlang
为什么是v2呢,是因为已经建立了一部分代码了,但是回头看觉得思路不太对。连思路都重构了,就叫做V2吧。
首先TTlang是什么,他就是另一个haxe
那么为什么不直接用haxe呢?
haxe还是带着gc的,他在极端低资源的情况下不适合,比如单片机。
ttlang会增加一点点限制,来处理内存回收问题。
不要GC,但也不会像rust那样弄得完全没法用。
如果你认同cpp是个垃圾,那我们才是好朋友。否则,关掉这个页面吧。
所以ttlang的 native port 主要是to C,而不是to C++
开发一些底层的内容时,c语言是绕不过的,而cpp大部分情况下并不能创造什么真正的价值。
//兔兔语的语法类似TypeScript,是一种类型后置的语言
function goodday(v1:int32,v2:string):void
{
log("hello world");
}
//和ts最大的不同,就是有int类型和struct
TTLang不使用GC系统,也不使用引用计数。
TTLang使用一个简单的原则,一个变量只能有一个父亲(或母亲,父母排名不分先后,防打拳),我们称为持有者。
除了this 关键字,我们还有owner 关键字,其它的持有是不可能的,语法报错。
其它的只能称为 引用,对应于其它语言中的弱引用。
弱引用不影响对象的生命周期,当持有者的对应成员变量置为null或者持有者对象自己被释放了,一个对象随机释放。弱引用失效。
这种原则下我们就不需要任何垃圾管理系统了。
只有临时变量可以稍微影响持有变量的释放逻辑,即使一个持有失效了,但是该对象被临时变量捕获了,也不会马上释放他,因为有可能随后更换持有者
var a = abc.Pop();
abc.Push(a);
比如这个例子,a 从一个队列中被推出,他暂时失去了持有者,但是这时不能立即销毁a,因为他有可能随后被放入另一个队列中。
这种情况下,出栈时判断是否需要销毁a
引用计数无法处理循环引用
标记清扫的GC不在乎循环引用
TTLang因为有唯一owner,追踪循环引用变得很容易,只要一直get owner 直到回到自己或者顶。
and more.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。