这是两个问题。:-)
关于第一个(关于添加本机)……最好将其详细说明为 Wiki 上的开发人员文档。从用户的角度来看, rebol标签中的问题通常应该更多地与语言有关。关于源代码本身的答案通常会很长,而且实际上只有少数人可以回答或关心答案(StackOverflow 称之为“过于本地化”)。如果有的话,到那时它最终将更像是一个c问题。
因此,告诉开发人员齐心协力编写文档并将其放在一个集中组织的地方可能是最好的主意!:-P 但实际上我自己也尝试过。我添加了一个 set-env native 来从解释器中设置环境变量,您可以在 GitHub 中查看执行此操作所需的差异以了解一些想法。
添加 SET-ENV,调整主机 api 以处理环境字符串
要记住的重要一点是,当您触摸某些文件时,您必须运行make prep,它会自动执行大量扫描和代码生成。添加原生是你肯定必须做的事情之一,每次你改变一个基本的界面。
至于您的第二个问题,这更多是关于解释器嵌入的面向用户的问题,首先要看的地方之一就是简单的REPL是如何实现的。目前主存储库中有两个版本,一个用于 Posix,一个用于 Windows。
https://github.com/rebol/r3/blob/master/src/os/host-main.c
所以一根绳子进去,一根绳子出来。但是还有更复杂的交互形式,你可以从reb-host.h获得它们,其中包括来自src/include 的这些文件
#include "reb-config.h"
#include "reb-c.h"
#include "reb-ext.h" // includes reb-defs.h
#include "reb-args.h"
#include "reb-device.h"
#include "reb-file.h"
#include "reb-event.h"
#include "reb-evtypes.h"
#include "reb-net.h"
#include "reb-filereq.h"
#include "reb-gob.h"
#include "reb-lib.h"
因此,您可以查看在 12 月 12 日开源时存在的 API 文件。事情将不断发展,并希望得到更好的记录。但就目前而言,这似乎是可用的。您可以将主机套件链接为共享/DLL 或静态库,这取决于您的构建设置和您使用的编译器。