问题标签 [druntime]

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 回答
145 浏览

unicode - Unicode 转换

配置:

  • 操作系统:Windows 7(32 位)
  • 使用 Phobos 标准库的 DMD 2.58

我的意图:

我开始移植 2007 年编写的旧包(10 个模块)。它具有完整的 unicode 支持,我想保留这种能力。

class UnicodeBom(T)它的作者为此目的编写了一个特定的模块(

我清理了Tango所有模块中的任何代码片段,并成功地在我的盒子上工作(肯定是在单元/模块级别)到目前为止,只有 10 个模块中的 4 个。


代码片段:

在哪里

  • st(参数)是std.stream.Stream
  • mSourceBuffer(私有字段)是一个wchar[]

引用:

摘自与final T[] decode (void[] content)方法相关的代码文档:

转换提供的内容。检查内容是否有 BOM 签名,该签名已被剥离。如果根据编码类型不应该存在签名,则如果存在签名,则会引发异常。相反,如果当前编码期望存在的签名不存在已知签名,则会引发异常


我的问题:

是否有使用开箱即用Druntime和/或Phobos资源导致相同结果的最新和更惯用的方法(即加载 UTF8/16/32 文件并将它们转换为 wchar[] 而没有 BOM)?

提前致谢。

0 投票
1 回答
202 浏览

segmentation-fault - 在 OS X 上初始化 D 运行时

编辑:这似乎是一个长期存在的问题,没有迫在眉睫的解决方案: http ://d.puremagic.com/issues/show_bug.cgi?id=8133 http://www.digitalmars.com/d/archives/digitalmars/D /Ideas_for_runtime_loading_of_shared_libraries._154126.html http://lists.puremagic.com/pipermail/dmd-internals/2011-December/002853.html

在 ac 程序中加载的 ad dylib 中启动 d 运行时似乎有问题。每当我调用 Runtime.initialize() 时,我都会遇到段错误。

C代码:

用 gcc 编译,没有标志。

d 代码:

使用 dmd -shared 编译

回溯:

在 OS X 10.7 中完成所有编译和调试

注意:如果 Runtime.initialize(); 行被注释掉,库被加载并正确运行。

0 投票
2 回答
1300 浏览

d - D 语言是否完全依赖于 D 运行时?

最近一直在学习D语言。我一直对运行时感到困惑。

从我能收集到的关于它的信息中,(这不是很多)我知道它是一种有助于 D 的某些功能的运行时。像垃圾收集一样,它与您自己的程序一起运行。但是既然 D 被编译成机器码,如果我们的程序不需要的话,它真的需要垃圾回收等功能吗?

真正让我感到困惑的是以下陈述:

“你可以用 D 编写操作系统。”

我知道你不能真正做到这一点,因为操作系统比任何编译语言在不使用汇编的情况下所能提供的更多。但是如果你有一个调用 D 代码的内核,D 运行时会阻止 D 在这样的准系统环境中运行吗?还是 D 运行时比这更简单?是否可以将其简单地视为源文件/库的“自动”包含,当与您的应用程序一起编译时,与您自己编写该代码没有什么不同?

也许我只是看错了。但我确信有关该主题的一些信息可以使很多人受益。

0 投票
2 回答
1465 浏览

d - 如何在没有 D 运行时编译 D 应用程序?

我一直试图永远解决这个问题,它开始让我烦恼。我了解 D 运行时库。它是什么,它做什么。我也明白你可以在没有它的情况下编译一个 D 应用程序。就像 XoMB 所做的那样。好吧,XoMB 定义了它自己的运行时,但在某些情况下,如果你不需要它,你就不需要编写自己的运行时。我知道我正在使用的 DigitalMars D 编译器 (dmd) 在运行时在幕后做了很多事情,比如根据程序所需的内容发出对某些事情的引用。而且,每个程序的东西。所以你必须自己定义这些。我决定尝试一下,试着自己弄清楚,然后走得很远。我的意思是让链接器吐出越来越少的错误。对于测试,我只想编译一个完整的准系统应用程序,只是为了让事情在没有运行时的情况下工作。或者尽可能少的运行时间。这是我的单一源文件。

我编译: dmd -c main.d -defaultlib=

然后链接:link main.obj

这是我得到的错误: OPTLINK : 警告 23: No Stack & OPTLINK: Warning 134: No Start Address

您可以看到我尝试将chainng main 连接到_main 以摆脱无起始地址错误,但无论如何,没有帮助。我需要做什么来消除这最后两个错误?如果我能让它工作,我想我可以查看我需要实现什么来让更多功能工作。但是,如果有人愿意帮助我解决这个问题,那将不胜感激!

0 投票
0 回答
24 浏览

linker - 将 D 程序与非默认运行时库链接

如何将我的 dmd 编译程序与特定版本的运行时链接?

我在尝试新的 GC 时需要这个。GC 是在运行时定义的。

另见:https ://forum.dlang.org/post/dahmztupviwgazbzevps@forum.dlang.org