#编译

2020-7-3 2:24
LFortran是建立在LLVM之上的现代开源(BSD许可)交互式Fortran编译器。它可以交互地执行用户代码,以便进行探索性工作(很像Python、MATLAB或Julia),还可以编译二进制代码,目标是在多核CPU和GPU等现代架构上运行用户代码。 GitLab的主存储库:https://gitlab.com/......
2020-7-1 10:42
想象一下:您有一个大型的多模块ClojureScript项目,并且您计划在生产中进行新的部署,您的项目使用的是CLJS编译器的高级优化模式,一切似乎都很顺利。在发布之前,您正在执行一些最后的E2E测试。然后,加载有故障的模块。砰!您会被打耳光,并出现类似如下的错误: 未捕获错误:没有协议方法IMultiFn.-Add......
2020-6-30 23:49
由于Lua5.4.0发布了,这让我真的很高兴,我决定写一篇小帖子来介绍编译到Lua的语言。 Moonscript已经存在了一段时间了(这也是我在最初的出版物中忘记将其添加到这篇文章中的原因之一),而且它很稳定,并且在业界得到了使用,它可能是目前最流行的Lua语言编译程序。我相信Itch.io的很大一部分是由moons......
2020-6-30 21:11
在本系列中,我们将探讨Rust在TiKV上下文中的编译时间,TiKV是TiDB数据库背后的键值存储。 最近,我们正在探索Rust的设计是如何阻碍快速编译的。在本系列的上一篇文章中,我们讨论了编译单元,为什么Rust如此之大,以及这对编译时间有何影响。 这一次,我们将用几个更多的主题来结束对Rust运行缓慢原因的讨论:......
2020-6-30 0:55
为了帮助支持我们的社区在新冠肺炎期间远程工作,我们将在2020年6月30日之前免费提供ACM在我们数字图书馆中发布的所有作品。了解更多。 我们使用饼干,以确保我们给你最好的经验,在我们的网站。 您的浏览器似乎不支持它们,这会影响网站功能。
2020-6-26 5:18
注意:这是一篇来自Sixten编程语言文档的老帖子,我对它进行了润色和充实。在写完之后,我发现了Salsa,这是一个与我的Rock库有着非常相似目标的Rust库,它也绝对值得一看! 编译器不再仅仅是获取一堆源文件并产生汇编代码的黑匣子。我们期望他们: 是增量的,这意味着如果我们在做了一些更改之后重新编译一个项目,我们......
2020-6-25 5:12
永久链接浏览文件此提交将删除`const char*wuff_base__note__i_o_redirect`全局变量的定义。这个变量没有在任何地方使用(在前一次COMMIT删除了对它的引用之后)。删除这一行代码(如果算上声明,就是两行,而不仅仅是定义)可能会对看似无关的性能微基准产生巨大影响。一些数字变得更好(例......
Tiny C Compiler(bellard.org)
2020-6-24 2:46
小的!。您可以在任何地方编译和执行C代码,例如在救援盘上(x86TCC可执行文件大约100KB,包括C预处理器、C编译器、汇编器和链接器)。 快地!。TCC生成x86代码。无字节码开销。编译、汇编、链接比GCC快好几倍。 无限量!任何C动态库都可以直接使用。TCC正朝着完全符合ISOC99的方向发展。TCC当然可以自......
2020-6-23 12:19
在本系列中,我们将探讨Rust在TiKV上下文中的编译时间,TiKV是TiDB数据库背后的键值存储。 最近,我们正在探索铁锈的设计是如何阻碍快速编译的。在本系列的上一篇文章中,我们讨论了实现泛型所需的编译时困难的权衡。 编译单元是语言编译器运行的基本工作单元。在C和C++中,编译单元是源文件。在Java中,它是一个源......
An Intro to Compilers(nicoleorchard.com)
2020-6-20 17:26
编译器只是一个翻译其他程序的程序。传统编译器将源代码转换为您的计算机能够理解的可执行机器码。(一些编译器将源代码翻译成另一种编程语言。这些编译器称为源到源翻译器或转换程序。)。LLVM是一个广泛使用的编译器项目,由许多模块化的编译器工具组成。 前端将源代码转换为中间表示(IR)*。clang是LLVM用于C语言家族的......
2020-6-19 3:23
上周,我完成了一个名为Compiler Compiler的新流的三部分试验,它考察了JavaScript规范ECMA-262是如何在SpiderMonkey中实现的。 JavaScript…。是一种编程语言。有些人喜欢,有些人不喜欢。JavaScript可能有点乱,但很容易上手。它是教会我如何编程的编程语言,并向我介......
2020-6-19 2:38
在C++20中,std::Sort与其他标准算法一起变成了constexpr。这使得以下代码成为可能。 第14行的sorted_arr在编译时被初始化为{1,2,3,4,5},并且main返回1。如您所见,机器代码中没有排序算法和逻辑的痕迹。此外,如果您打开优化(-O3),整个代码就会变成一条指令,从而证明所有排序都......
2020-6-16 23:36
这可能是一个有点不受欢迎的观点,所以点击诱饵标题应该是合适的!从1.6版开始,我已经学习和使用Rust将近四年半了。对于熟悉语言、工具和生态系统的一些问题来说,这是一段很长的时间。但这是一个略有不同的故事,这是对编译器速度慢的常见批评的异议。在这次讨论中,我将争辩说,这些说法充其量只是误导。有大量证据表明,与其他语言......
2020-6-16 9:38
在本系列中,我们将探讨Rust在TiKV上下文中的编译时间,TiKV是TiDB数据库背后的键值存储。 在本系列的上一篇文章中,我们介绍了Rust的早期开发历史,以及它如何导致了一系列决策,这些决策导致了一种编译速度很慢的高性能语言。在接下来的几个月里,我们将更详细地描述Rust中一些使编译时间变慢的设计。 在这一系列......
2020-6-13 19:55
《寻找原始的Fortran编译器》刊载于2017年4-6月的IEEE计算史年鉴。如果链接不起作用,你可以在这里阅读我最终提交的版本。 我写这篇文章是为了记录我在2003年末开始寻找IBM704的原始FORTRAN编译器的源代码的过程。很多搜索都记录在这个灰尘甲板的博客上,我在2004年7月创建了这个博客,作为一种广告......
2020-6-9 19:24
Erlang是一个复杂的系统,我不能在一篇简短的文章中公正地描述它的内部工作方式,但我想深入了解编译和加载模块时发生的事情。与大多数编译器一样,第一步是将文本源代码转换为抽象语法树,但这并不重要。有趣的是,代码经历了三个主要表示形式,您可以查看每一个表示形式。 Erlang的随意作用域规则在函数式语言中是独一无二的。......
2020-6-8 2:33
蜂鸟是一个用于将经过训练的传统ML模型编译成张量计算的库。蜂鸟允许用户无缝地利用神经网络框架(如PyTorch)来加速传统ML模型。多亏了蜂鸟,用户可以从以下方面受益:(1)在神经网络框架中实施的所有当前和未来的优化;(2)本地硬件加速;(3)拥有支持传统和神经网络模型的独特平台;以及(4)无需重新设计他们的模型。 ......
2020-6-7 21:14
Parenscript是一个从Common Lisp的扩展子集到JavaScript的翻译器。Parenscript代码可以在浏览器(作为JavaScript)和服务器(作为Common Lisp)上几乎完全相同地运行。 Parenscript代码的处理方式与Common Lisp代码相同,从而使Lisp宏的全部功能......
2020-6-7 4:28
外面天气很好,让我们做个编译器吧。您不需要任何关于编译器如何工作的知识就可以跟上。我们将使用Python来实现我们自己的编程语言Teeny Tiny,它将编译成C代码。它将需要大约500行代码,并提供定制编译器所需的初始基础设施,并将其扩展为您自己的数十亿美元的生产就绪编译器。 本教程是一系列帖子,循序渐进地构建可工......
2020-6-7 1:51
在过去的几个月里,我们一直在使用标准的Solc智能合约编译器,并且我们已经积累了近20个新的bug(现在大部分已经修复了)。其中一些是现有错误的副本,症状或触发器略有不同,但绝大多数是编译器中以前未报告的错误。 这是一场非常成功的起毛战役,据我们所知,这也是针对Solc发起的最成功的战役之一。这不是Solc第一次使用......
2020-6-5 11:47
我最喜欢的语言之一是围棋语言。我喜欢它的简约。它在云环境中很受欢迎,也很有用。许多流行的工具都是用Go编写的,这是有充分理由的。 去年我做了一次关于围棋的演讲,有人要求我对围棋进行批评。我不介意围棋缺少例外或泛型。这些功能通常被高估了。 然而,尽管Go很有魅力,但我发现它的编译器与我对其他编程语言的期望不一样。当围棋......
2020-6-4 13:18
看起来clang-11.0.0编译器错误编译了sqlite3.c版本3.32.1。我已经签入了对SQLite的更改,似乎可以解决这个问题。但可能还有其他虫子。因此,请谨慎使用clang-11.0.0并仔细测试您的应用程序! OSSFuzz在SQLite上报告了错误23003。我无法在我的桌面(带有GCC-5.4.0的......
2020-5-31 11:8
TL;DR:缓存统治着我周围的一切。PYC文件可以包含机密,不应签入到源代码管理。使用标准的Python.gitignore。 当您第一次导入Python文件时,Python解释器将对其进行编译,并将结果字节码缓存到.pyc文件中,以便后续导入不必处理再次解析或编译代码的开销。 对于Python项目来说,将配置、密钥......
Why do C to Z80 compilers produce poor code?(retrocomputing.stackexchange.com)
2020-5-31 3:24
我的印象是,很难将C编译成Z80并最终得到优化良好的代码。是这样吗?为什么? 我对6502的了解更多。下面的一些例子说明了为什么C不适合6502: C中的数组由整数类型索引。6502在索引数组方面相当快,但不幸的是,只有在索引是一个字节宽的情况下。因此,像strcmp或strlen这样的代码可能需要对每个字符执行16......
2020-5-30 2:35
我一直在研究人们开始使用打字稿时经常出现的问题。这是基于来自Stack Overflow/DefinitelyTyped的经验教训,以及与打字社区的一般接触。您可以关注更新,别忘了在gihub★🌹上登录。 以极低的免费价格,你会得到一页页纯粹的令人叹为观止的东西。充斥着源代码示例和清晰、简明的解释,Tyescript......
One-pass Compiler(keleshev.com)
2020-5-23 21:43
让我们来看看什么是一遍编译器,并尝试实现一遍编译器。 一遍编译器在分析过程中直接发出汇编(或二进制代码),而不创建中间表示,如AST。这是一种罕见的技术,在计算机内存匮乏的时代使用。这限制了可能的语言功能和生成的代码的质量。但是,这种技术产生的快速编译器让比尔·盖茨羡慕不已。这是一种非常罕见的技术,在计算机内存匮乏的......
2020-5-19 22:54
当前MVP形式的WebAssembly已在所有主流浏览器上发布,并且已经能够实现令人惊叹的功能。这并不意味着它的发展已经结束:相反,在不同的发展阶段,有许多后MVP功能提案。 一个这样的建议是关于将所谓的anyref/external ref类型(和相关指令)添加到规范中。但是,什么是anyref?为什么需要将其添加......
2020-5-17 4:42
我的名字是Jesse,这是一个面向喜欢在实践中学习的开发人员的Rust入门教程。 本教程的目的是发展对Rust中的工具构建的直觉-具体地说,学习如何在Rust中思考和构建。 我们的目标是生产一个非常基本的命令行编译器,可以将包含标题和段落的基本Markdown文档转换为html文件。 为此,我们将从构建一个简单的“H......
Make LLVM Fast Again(nikic.github.io)
2020-5-11 8:3
Clang是一个“LLVM原生的”C/C++/Objective-C编译器,其目标是提供惊人的快速编译[…]。 我不确定这在过去是不是真的,但现在肯定不是真的。每个LLVM版本都比上一个版本慢几个百分点。LLVM10在这方面付出了一些额外的努力,不知何故,不知什么原因,使Rust编译速度整整慢了10%。 有人可能会争......
2020-5-8 21:3
Micro-Mitten是一种类似于铁锈的基本编程语言,经过简化以简化控制流结构和类型系统。 与Rust一样,Micro-mitten提供了一种静态的内存管理方法;然而,Micro-mitten的方法与Rust有很大的不同。它不依赖于单一所有权和复杂的生命周期系统,而是使用一系列数据流分析来静态地近似堆活跃度。这意味......