构建你自己的Lisp编译器

构建你自己的Lisp编译器在本书中,你将在学习C语言的同时学会编写你自己的编程语言——一个1000行左右代码的简单Lisp。不过我们并不是从零开始编写的,在代码中我用到了一个外部的库来完成一些初始化的工作。但是剩下的最重要的部分都是我们一行一行编写的,而且在本书结束时,你将会拥有一个属于自己的“麻雀虽小,五脏俱全”的Lisp。英文版:中文版:#电子书

相关推荐

封面图片

Golang 编译器代码浅析

Golang编译器代码浅析本书主要目的是让读者在源码层面熟悉Go编译器的实现,因此会以代码讲解为主。但编译器的实现涉及到非常多的细节处理,本文会尽量避免大段的贴代码来对其进行分析(实际上也是不可行的),而是建议读者将文章当着一个参考,自己动手去源码中进行探索。因此每个主题的文章基本会按照如下结构进行组织:1.该模块的简介,需要涉及到的理论知识复习。例如词法、语法分析中涉及到很多形式语言与自动机的知识,文章都会先尽可能少地温习一下相关知识2.核心数据结构介绍,意在搭建该模块的骨架3.核心逻辑介绍,意在了解该模块实现的主体算法思路4.特殊案例分析,详细分析典型案例的处理流程另外作者还开了两个坑《Linux核心概念详解》和《极简计算机结构介绍》,也写了一些内容不过还不太完整。

封面图片

让 Python 和 C 语言性能相当的新编译器

让Python和C语言性能相当的新编译器是一个新的“高性能Python编译器,它可以将Python代码编译为本地机器代码,没有任何运行时间的开销”。与Python相比,在单线程上,典型的速度提升是10-100倍或更多。而且Codon支持原生多线程,这可以使速度再提高许多倍。Codon的性能与C/C++的性能相当(有时甚至更好)。用户只需像他们习惯的那样写Python,而不必担心数据类型或性能,Codon会自动处理这些问题,他们的代码运行速度比普通Python快10到100倍。来源,来自:雷锋频道:@kejiqu群组:@kejiquchat投稿:@kejiqubot

封面图片

Cheep C++ 到 Webassembly 编译器现已开源。

CheepC++到Webassembly编译器现已开源。Cheerp是一个用于Web应用程序的C/C++编译器,可让你将几乎所有C/C++代码编译为WebAssembly和JavaScript。其最新的3.0版本已经开源。​​​Cheerp是一个用于Web应用程序的C/C++编译器,可让您将几乎所有C/C++代码编译为WebAssembly和JavaScript。其最新的3.0版本已经开源。Cheerp主要用于将现有的C/C++库和应用程序移植到HTML5,但也可用于从头开始编写高性能Web应用程序和WebAssembly组件。使用Cheerp,C/C++代码被编译成JavaScript/WebAssembly,并通过公开正确的JavaScript接口进行优化,可以轻松集成到Web应用程序中。Cheerp是Webassembly编译工具系列的一部分,与CheerpJ、CheerpXforFlash和WebVM并列。可用于以下场景:1.将遗留Java应用程序和JavaApplets转换为HTML5,只需很少的努力或无需任何努力,以延长它们的生命,直到弃用,或直到开发出替代的本机HTML应用程序。2.将现有的Java客户端迁移到基于浏览器的Web应用程序,通常通过使用CheerpJ将业务逻辑从Java转换为WebAssembly/JavaScript,并用原生HTML重写UI。3.使用(转换后的)Java库作为本机Web应用程序的一部分。在幕后,CheerpJ需要WebAssembly中的完整JavaSE运行时和存在于浏览器中的JavaScript,以及支持从Java访问和操作DOM的JavaScript/DOM互操作性API。相比之下,C++的Cheerp不需要这样的运行时,而是直接使用LLVM字节码格式作为目标文件和库的中间表示。它的特性如下:解析代码,发出最终的警告和错误,然后生成对输入程序进行编码的等效IR(=内部表示)。IR通过一系列转换优化为更紧凑和更高性能的IR。优化后的IR最终由代码生成为JavaScript和WebAssembly函数和变量的组合。或者简单地说:C++代码库->Cheerp(使用LLVM的优化)->JS+Wasm一旦生成了.js和.wasm文件,接下来就是为这两个静态文件提供服务,将它们嵌入到相关的HTML页面中,在库的API之上构建功能,并测试是否一切正常。主文件到被调用的仍然是一个.js文件,但是一个.wasm文件也被加载并从.js文件运行。虽然CheerpJ不是开源产品,但Cheerp现在是。在这一点上,重要的是要注意,从languageX到WebAssembly的工具现在可以证明更有用,因为WebAssembly最近摆脱了浏览器的限制,现在可以用于运行微服务和无服务函数,甚至可以运行Wasm二进制文件在命令行上,这样甚至可以开发跨平台的CLI应用程序。

封面图片

Twitter上有人分享的跟编译相关的文章。了解编译器对增长你的工程知识很有帮助。

上有人分享的跟编译相关的文章。了解编译器对增长你的工程知识很有帮助。1.2.3.4.5.编译器开发的经典之作,也是我读过的关于编程语言的最佳书籍之一《》6.《》--从更多的数学角度看类型理论,是一本更密集的书。很多令人兴奋的话题,如lambda计算和程序的完整性

封面图片

Paradigm 发布 REVM 编译器 Revmc

Paradigm发布REVM编译器Revmc6月21日消息,Paradigm发布REVM编译器Revmc,Paradigm将开源Revmc,这是一个用于将EVM字节码降低为本机代码的编译器,在各种实际EVM基准测试中展示了从1.85倍到19倍的改进,还在Reth中集成了Revmc并成功同步了链。接下来,将在OPReth中集成Revmc以供L2使用,其改进将在计算繁重的工作负载中发挥作用。

封面图片

【EthStorage与合作伙伴发布zkGo编译器】

【EthStorage与合作伙伴发布zkGo编译器】2023年09月27日10点44分9月27日消息,EthStorage联合HyperOracle和DelphinusLab发布zkGo编译器。据介绍,zkGo基于Go最新的1.21.0基础上,是首个把常规的Go代码编译成ZK协议兼容的Wasm代码。生成的Wasm代码执行已经能够被DelphinusLab的zkWasm工具进行零知识证明和链上验证。

🔍 发送关键词来寻找群组、频道或视频。

启动SOSO机器人