新开发的操作系统上如何支持应用程序使用rust编程?

先说下我的rust背景:我之前对rust的使用停留在成熟的框架中修改和增加模块性代码,也就是纯粹的编码,对rust的编译环境和编译原理不熟悉,所以请大家在回答问题时可以尽量说清晰些。
我看了下rust对fuchsia的支持时提交记录涉及到llvm、标准库,rust编译工具链支持新增的target(类似aarch64-known-linux-gnu)等内容。然后这几部分感觉是互相耦合的。所以现在有点下不来手。
为了沟通方便,我先说下我的目标:
    1.当前只考虑aarch64
    2.操作系统是c语言开发的,c库是新实现的(称为mylibc)
    3.暂时可以先不考虑系统调用相关的接口rust支持
    4.新增编译target:aarch64-unknown-myos

我的问题 :

    1.有没有可能在不修改rust编译工具链的情况下来做到让新开发的操作系统上的app支持rust编程?
    2.我需要做哪些事情,具体的先后顺序是什么?

这个问题可能有点大?提供任何有用的建议都将不胜感激。

最佳答案

是要在 新开发的微内核操作系统 上进行rust代码的编译,还是编译好后放到系统上运行?
rust 的 target 不支持你这个系统的话,需要自己实现个。
target 这个会涉及到调用内核这些的底层接口,如果你这个新的内核能包装一层兼容已有的一个target也可以

4个月前 评论
讨论数量: 5

是要在 新开发的微内核操作系统 上进行rust代码的编译,还是编译好后放到系统上运行?
rust 的 target 不支持你这个系统的话,需要自己实现个。
target 这个会涉及到调用内核这些的底层接口,如果你这个新的内核能包装一层兼容已有的一个target也可以

4个月前 评论

就是我现在开发了一个新的微内核操作系统,现在系统的内核和libc都是c语言开发的,现在应用想支持rust编码,当然也包括系统服务也需要支持rust编码,内核本身不需要支持rust编码。
整个系统代码(包括内核、libc、系统服务(可能是rust语言编写的))要一起编译,我们的系统会发布sdk,用户可以rust语言编写app使用我系统发布的sdk进行编译,最终在我们的系统上运行。

4个月前 评论
lmaster
  1. 操作系统是底层,你们怎么设计接口的,POSIX实现了么?
  2. 你们如果不是自己设计并生产cpu,是不是可以考虑rust的不适用std,就类似单片机rust的编程方式,这样就可以交叉编译了(比如在win上编程,生成二进制生程序,在你们的系统上使用)

如果非要用std,其实可以参考linux的glibc方式,看看rust二进制程序为什么不能在你们系统上运行。
比如在win上编程,生成二进制生程序(使用同cpu架构 linux版的rust编译器),在你们的系统上使用缺少什么。
自己逆向自己的系统和程序,只要能成功打出hello world,就明白怎么回事了。

你们都能开发操作系统了,这种问题要问论坛的人么?

2周前 评论

我说的操作系统是用c语言开发的嵌入式微内核实时操作系统,并非像linux那样的通用操作系统,内核里无非是内存管理、调度、和进程间通信几个主要模块。精通这几部分的人并不了解rust是怎么回事,我个人觉得是正常的,毕竟大家都是普通人,不是全栈的大牛。
回答你前面的问题:我们不生成硬件,目前只支持aarch64,posix接口实现了70%的样子。你所说的使用glibc的方式编译并在我们自己的系统上运行,我觉得这种方式并不一定可行,首先系统调用接口都不一样肯定无法运行、还有libc里的用户程序的堆管理接口。。。。,感觉无法下手啊。所以还请多指教下。

2周前 评论
lmaster

aarch64,rust可以不使用std,你可以在其他平台上面编程(比如win11),然后把程序放到你自己的平台上运行,就想单片机开发

还有就是libc不只是glibc,可以参考musl,musl的c库性能比glibc差但是小,内容少

5天前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!