- 主题:GD32的库真是写的稀烂
高层轮子都有不少了...lvgl虽然目前是c移植过来的,但我看reddit上有人想轮一个
pure rust的...
你看我前面贴的gcode的例子,那个也是pure rust的。
之前活没干起来所以没怎么关注到,现在一搜就感觉趋势不太对,很多人都在摩拳擦
掌的在rust里造轮子....
【 在 tom6bj (tom) 的大作中提到: 】
: 这是底层轮子都有了吧。。。
: 我数了一下, stm32f10x官方usb库, 回调函数最多得42个
: (实际用不了这么多, 很多是nop_process)
--
修改:lvsoft FROM 180.109.234.*
FROM 180.109.234.*
rust几年前就基本定型了,但当时用于嵌入式开发还必须用unstable分支,所以我当
时没有真正开始。演化到现在我感觉差不多可以进入了。
比如hal库已经迭代过一轮,我觉得后面应该也不会再重来了...
思维上嘛...我用过scala这种更反人类的语言...暂时压力不大...
不过rust这种严格的检查写代码确实太累,容易中断思路。习惯了python这样的写几
行试试再说的风格,再来写rust确实会比较烦躁。所以说我还在摸索合适的平衡点...
【 在 eggcar (eggcar) 的大作中提到: 】
: LL库还好,基本是把寄存器zero-cost地翻译成人类语言了
: rust还没进化完成是个问题,跟早几年的go一样,演化速度快 学习跟不上趟...我
在等它啥时候release 1.0
: 不过我觉得未来会有在rust基础上演化出来的更合乎人类思维的语言,解决跟编译
器斗智斗勇的问题。。。
--
FROM 180.109.234.*
这个不是大问题。
更难debug的是functional的编程方式,但mcu上可以选择还是基于procedural
approach写代码。
zero-cost abstraction本身不会影响可读性,相反可以改善可读性杜绝错误。
比如plot(x,y),x和y都是一个uint16,理论上你可以犯错误写成plot(y,x)。
rust可以不增加代价的封装成CoordX(x),CoordY(y),写反了马上就能检测出来,
这是我目前相当喜欢的特性。
当然zero-cost abstraction并不仅仅是这个用途,这个框架比较大难以一言而尽。
如果是meta programming确实就比较难调试了。但我在另一个基于rust的系统性项
目中用了一个基于meta programming写的parser,我发现也没我预想的那么糟糕。
rust的compiler还是相当给力并且友善的。
【 在 eggcar (eggcar) 的大作中提到: 】
: 还有一个问题,rust这种zero-cost abstraction,会不会导致debug很困难?
--
修改:lvsoft FROM 180.109.234.*
FROM 180.109.234.*
c比较简单,所以编译成对应的机器码的过程比较容易预测。
这也是为啥c++在嵌入式开发中应用比较少的原因。
rust我目前还不敢说它的可预测性如何。但rust的设计目标之一还确实是要取代C做
底层系统编程的。rust也很早就完成了自举,也即基于rust实现rust自身的一切。
现在在rust圈有个比较明显的趋势就是很多人都在各个层面讨论要轮个基于pure
rust的底层设施。
目前rust的轮子已经不少了,在crates.io上,现在有40091个库...最近半年有更新
的库有15000个左右。作为对比,pypi下有233683个项目,活跃项目也就60000个左
右(满足alpha级成熟度,或者一年内有更新)。
crates里面的很多库版本号虽然都是0.2,0.3...但我用的几个质量都很好的,让我
非常满意。不足的地方更多的是功能不足而不是实现的不好。这个跟python下面的
0.x项目质量是相当不同的。
【 在 spadger (imdx) 的大作中提到: 】
: 不管什么语言,最终都要变成机器指令,目前阶段,C还是距离机器指令最近的。
: 不过就算是C,在不同的硬件上生成的机器指令可能都会有非常大的差异。
: 现在写汇编的人应该不多了,但是debug的时候,还是经常需要看汇编指令的。
: ...................
--
FROM 180.109.234.*
我前面都说了,我最近在用rust把一个gui塞进stm32f0,64kb rom含字库...
顺便这还是只是英文字库...还都不是中文...
另外这样的库有啊,我不是说了很多遍lvgl了么。
【 在 javaboy (喝了咖啡就话多-_-;) 的大作中提到: 】
: 问题是webassembly也不能干正经活啊,连显示个中文字体都很麻烦。这不又回到刀
耕火种的年代了嘛。
: 人家自有graphics栈和ui栈的公司自然觉得webassembly好,因为他们可以把现有
代码凭空多port一个平台。但开发人员就难了,写个点击按钮hello world的程序都没
有方便的库用。。。
--
FROM 223.104.145.*
当然不可能...hal又不是os...
【 在 javaboy (喝了咖啡就话多-_-;) 的大作中提到: 】
: hal构建的bin是不是能在f0/f1/f3/f4无缝运行?
--
FROM 223.104.145.*
lvgl是c写的啊,rust有个binding,然后有人准备写个pure rust版的。
lvgl可不是玩具。就好比你觉得lua是玩具嘛一样的概念。
【 在 javaboy 的大作中提到: 】
: lvgl这种玩具历史上不是有n多嘛,
: gwt、nacl、brython、甚至qt emscripten。。。。
: 用rust写的又能有什么不一样呢。
: ...................
--
FROM 101.81.86.*
这是小问题。有个语法糖把.unwrap()换成?即可。
但这要求函数返回Result类型,这个在main里当然是不可能的,但wrap一层就好了。
【 在 javaboy (喝了咖啡就话多-_-;) 的大作中提到: 】
: 咳咳,一眼望过去全是unwrap()....
--
修改:lvsoft FROM 101.81.86.*
FROM 101.81.86.*