问题标签 [mruby]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
158 浏览

c - 使用 MRuby 编译 Contiki 应用程序

我正在尝试编译一个包含 MRuby 库并执行一些简单的 ruby​​ 代码的 Contiki 应用程序。问题是,我不知道如何在编译中包含 MRuby 库。

这是项目:https ://github.com/matus-tomlein/contiki-mruby-example/tree/wrong

我要执行的代码在contiki-mruby-example.c. 问题可能出在Makefile. 这是我目前拥有的:

执行时出现以下错误make

我要包含的 MRuby 代码位于mruby/include.

这是一个类似的问题:How to use external libraries and compile them with a Contiki application But using TARGET_LIBFILESor LDFLAGSdidn't help. 我想那是因为我正在编译纯源代码,而不是库。

我可能缺少一个简单的答案。感谢您的任何建议。

0 投票
1 回答
171 浏览

ruby - 为什么某些 mruby 示例无法编译?

我一直在尝试将 mruby 设置为在 C 中使用,但我只成功编译了一个简单的“hello world”示例。其他示例无法编译:当我尝试编译https://github.com/mruby/mruby/blob/master/tools/mrbc/mrbc.c时,我得到了这个:

当我尝试以他们建议的方式(gcc -Iinclude hello.c lib/libmruby.a -lm -o hello.out(实际上:在类似的方式。我已经尝试了两种方式。)我明白了:

看起来我缺少一些文件或其他东西,但我不确定是什么。我正在使用 mruby 1.1.0。我有 mruby-1.1.0/include,其中包含 mrbconf.h、mruby.h 和 gcc 搜索路径中的文件夹 mruby,以及 LIBRARY_PATH 中的 mruby-1.1.0/build/host/lib(即使在我的示例中)出了什么问题,我只是将它们放在与我正在编译的文件夹相同的文件夹中)。

知道我的安装和/或我的编译方式有什么问题吗?

0 投票
1 回答
313 浏览

c - 在 C++ 中调用 mruby VM

我正在尝试将一些用 C 调用的 ruby​​ 解释器代码转换为 mruby 格式。我被困住了,希望能在这里得到帮助。

我的 testruby.rb 文件内容:

下面是我的 C++ 文件的片段:

问题一:

上述方法,我作为一个模块发送到 mruby 解释器,以便 .rb 文件可以调用它。

请让我知道以下格式是否正确:

问题2:

如何将以下 ruby​​ 解释器代码转换为 mruby?

rb_require("./testruby"); // 其中 testruby 是我的 testruby.rb 文件

现在我想从 testruby.rb 文件中调用 helloworld 方法。如何调用 mruby 的等效方法(用于 rb_funcall)?

如何在我的 c++ 代码中读取 helloworld 方法的返回值?

问候,

0 投票
1 回答
310 浏览

c - 通过 C 读取 mruby 程序的“返回”值

我在 C 中调用 mruby VM 时遇到问题。我可以调用 mruby vm 并从 C 执行 ruby​​ 代码。我也可以触发 ruby​​ 代码中定义的方法。但是我在尝试读取 ruby​​ 方法的返回值时遇到了问题。我在下面提供了我的示例场景。

代码:

我不确定这是否是调用 ruby​​ 方法的正确方法?我在网上找不到任何文档或示例。任何尝试通过 c ( 使用 mruby ) 调用 ruby​​ 代码的人可以帮帮我吗?

问候,

0 投票
1 回答
471 浏览

mruby - 与 require 和 require_relative 相关的 mruby 问题

我正在尝试使用 mRuby。我在本地编译了 mRuby 源代码。我试过这个简单的例子:

公司

测试1.rb

test2.rb

我使用 mruby 执行了两个测试程序。mruby.exe test1.rb mruby.exe test2.rb

在这两种情况下,我都会收到错误:

mRuby 不支持'require'吗?

0 投票
1 回答
429 浏览

mruby - mruby-require 错误:NoMethodError:主要的未定义方法“puts”

我设法从 https://github.com/mattn/mruby-require添加 mrubygem - mruby-require 编译 mruby 代码

但是,当我尝试调用 require './' 时出现错误。下面是我的代码:

公司

测试1.rb

当我执行 test1.rb 时,我从 mruby 收到此错误:

经过一些分析,我发现'puts'不适用于mruby。事实上,在添加 mruby-require gem 之后,没有 ruby​​ 代码被执行。我是否需要使用 mruby-require 添加任何依赖项?

有人能帮助我吗?

更新:根据要求粘贴 build_config.rb 的内容。我已经删除了评论的行。

build_config.rb

0 投票
1 回答
70 浏览

c - 编写自定义 IRB

我正在玩各种小硬件。试图学习它。我想运行mruby。我已经为我的硬件编译了。并拥有框架以及包含 MIRB 和 MRUBY 箱。

但我可能会喜欢我自己的 IRB 代码。我是一名程序员,但自大学以来从未处理过如此低水平的事情。

我在这个过程中从哪里开始,我的 google-foo 没有削减它。

0 投票
2 回答
203 浏览

nim-lang - 在 nim 应用程序中包含一些 mruby 是否可能/容易?

我目前正在尝试学习 Nim(它进展缓慢 - 不能投入太多时间)。另一方面,为了获得一些工作代码,我想对我正在使用 ruby​​ 开发的 Nim 应用程序的部分进行原型制作。

由于 mruby 允许在 C 应用程序中嵌入 ruby​​ 子集,并且由于 nim 允许将任意 C 代码编译为函数,所以感觉这应该相对简单。有人做过吗?

我特别在寻找使用 Nim 的时髦宏功能分解成内联 ruby​​ 代码的方法。我要自己尝试,但我认为肯定有人已经尝试过和/或提出比我目前的学习状态更优雅的解决方案:)

0 投票
0 回答
115 浏览

rust - How can I make a C pointer wait if called from a different thread, but work in a callback?

I'm trying to implement a thread-safe version of an mruby Rust binding.

mruby has a *mut MRState (a wrapper over mrb_state). You need to pass this *mut MRState when running mruby code. The mruby code has a Rust callback that it can call where it passes the same *mut MRState variable.

This *mut MRState is wrapped in a MRuby struct which I'm trying to make thread-safe. The problem is that if I wrap MRuby in a Mutex, it won't be able to re-enter inside of the Rust-written callback.

I'm currently wrapping MRuby in a RwLock but it's not very useful. The *mut MRState should be in a more permissive lock that lets it run inside of the callbacks.

How can I make MRuby work in both the callback and be forced to wait if called from different threads?

Apart from this, I'm having an issue with the *mut MRState inside MRuby which is not Send & Sync.

This is an example of the callback.

This is an example of running mruby on a thread. mruby variable here could be an Arc<RwLock<MRuby>>.

The main reason why I want to implement this is not functionality. Actually, it's catch_panic which I need in order to catch any possible panics from the Rust callback. catch_panic runs in another thread, so I need to make MRuby thread-safe. Rust will stabilize std::panic only in 1.9.0 and until then I would need a working solution that doesn't need Rust nightly.

CORRECTION

Due to a bug in Rust's documentation generation, catch_panic is only marked as deprecated and not as unstable, even though it is. So a very simple solution is to just use std::panic and give up on thread-safety. I'm going to leave the question open, though, in case there is a good answer to this, even though my personal interest is lower now considering the aforementioned.

0 投票
0 回答
235 浏览

c - mruby 和嵌入式语言

我正在学习 mruby,我到处都在阅读的支持它的论点之一是它是

我看过一些混合了 C 和 mruby 的代码。但是我不是很清楚嵌入式语言到底是什么,它的优点是什么?例如,我可以用 C 编写所有内容,那么 mruby 为我的 C 应用程序带来了什么?我为什么要制作这种混合物或嵌入?

请通过一个简单的示例帮助我理解,这是嵌入到 ac 代码中的示例 mruby 代码:

我也对嵌入式系统语言和嵌入式语言感到困惑。

请帮助我理解这一点。