Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
Mark24Code authored Jun 27, 2024
1 parent 2724b72 commit 3888b3b
Showing 1 changed file with 81 additions and 34 deletions.
115 changes: 81 additions & 34 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,85 @@
# mruby-devkit
# MRuby Devkit

mruby devkit
![mruby](./doc/logo.png)

灵感来自于 Golang 可以编译为二进制可执行文件。 devkit 提供一个简易的脚手架,使用 Ruby 程序也可以打包成二进制可执行文件
MRuby Devkit 是一个开箱即用的脚手架。 基于 MRuby 将你的 Ruby 代码打包成 二进制可执行文件

---
方便开发类似于 Golang 的二进制可执行文件。

测试:
> —— 灵感来自于 Golang 可以编译为二进制可执行文件的迷人特性。
MacOS

- AMD64 ✅
- ARM64 ✅

Debian/Ubuntu/Mint Linux
# 一、使用约定

- AMD64 ✅
- ARM64 ✅
## 前置运行环境

系统需要安装 Ruby3,且安装了 Rake

> `gem install rake`
## 约定

### 1. `src/main.rb` 程序入口

程序入口不可修改。它是 `run``build` 寻找的入口。

### 2. `src/lib/*.rb` 是多文件

lib 中适合存放拆分的多文件。

多文件中,如果存在依赖关系。需要特殊命名比如 01xxx, 02xxx …… 控制相对顺序。

多文件最终会被拼接成一个上下文送入编译。

### 3. `mruby.conf.rb` 是 mgem 配置文文件

可以引入 [第三方 mgem ](https://mruby.org/libraries/)

裁剪需要加入的 gem,控制编译选项。

#### 注意:
* 第三方标准库并不是每一个都可以被正确 build 比如 mgem-curses 无法 build,因为存在 BUG。
* 要正确的配置编译选项,确保 mruby 产生。
* 配置的 mgem 可以直接在上下文中使用,不需要 require

## 差异

* MRuby 和 CRuby 标准库有差异,请关注官方的文档
* 工作模式是:裁剪 mgem 、功能,最后编译的解释器 + mruby 代码 进行联合工作。 mruby 代码不需要 require 语句导入包。
* MRuby 有可能工作在嵌入式环境中,以及可能没有文件系统的硬件中。所以编译成 二进制应用。
* MRuby 和 CRuby 内核不同。 MRuby 实现精简高效,全部采用可跨平台的 C 语言,内存实现高效,精简,适用于嵌入式、跨平台。
* MRuby 更像是 C 项目在开发,需要了解 C 语言以及构建的概念

---

# 使用方法
# 二、开发

## 0. 系统需要拥有
## 0. 编写程序

Ruby3 提供 Rake
`src` 下编写 ruby 程序

## 1. rake -T 查看可用命令
## 1. 运行程序

> 模仿 golang 的 go run
`rake run`

## 2. 编译当前程序(默认使用当前计算机平台)

> 模仿 golang 的 go build
`rake build`

## 3.交叉编译的包

借助 Github Action 编译不同平台的可执行二进制文件。

* 可以 fork 仓库在 Github Action 运行结果下可以看到构建产物。

## 4. 内置 Rake 命令

rake -T 查看可用命令

```
➜ build git:(main) rake -T
Expand All @@ -45,34 +98,28 @@ rake mruby:init # init
rake run # run program
```

## 1.模仿 golang 的 go run

`rake run`

## 2.模仿 golang 的 go build
----

`rake build`

## 3.交叉编译的包

借助 Github Action 在 main 分支推送后,查看 Action 构建任务,下载产物

## TODO
# TODO

- [x] 交叉编译
- [x] 多文件
- [x] run 命令
- [x] build 命令
- [x] 自动初始化

## 约定
---

- `src/main.rb` 是入口文件
- `src/lib/*.rb` 是依赖文件
# 平台:

程序会把 `lib/*.rb` 合并 最后和 main.rb 合成一个文件,进行 build
MacOS

这对程序的组织、复杂度都有会对应的要求。需要自己控制复杂的依赖关系。
- AMD64 ✅
- ARM64 ✅

没有引入额外复杂的 makefile,也不想耦合进入 MRuby 的构建过程。
Debian/Ubuntu/Mint Linux

有依赖关系的尽可能写在一个文件。 lib 中的文件应该可以 无顺序要求引入。最后汇总在 main.rb 进行聚合。
- AMD64 ✅
- ARM64 ✅

lib 中声明关键的类、模块。main.rb 声明的是主体逻辑。

0 comments on commit 3888b3b

Please sign in to comment.