技术,生活,随看 \随转
本系列将介绍并实现一门简单的编程语言——Kaleidoscope,教程的每一章都会逐步对其编译器进行完善。同时会介绍编译原理相关的理论和知识,以及 LLVM 相关概念。每一章都会花费很大的篇幅对相关的代码实现进行解释。因此,强烈建议每一位读者亲自对代码进行实践。

教程总共分为十章,每一章包含不同的主题,各章之间属于循序渐进的关系,各章相关的代码,也是通过增量修改实现的。如下所示,为各章的主题与内容简介。

第1章 - Kaleidoscope 与词法分析器。介绍了目标以及实现的基本功能。词法分析器是为一门编程语言构建解析器的基础,我们使用 C++ 实现一个简单的词法分析器。
第2章 - AST 与解析器。介绍了解析器相关技术,以及抽象语法树的构造。关于解析技术,本教程使用的是递归下降分析法和算符优先级分析法。
第3章 - LLVM IR 代码生成。介绍了如何基于 AST 生成 LLVM IR,通过一种简单的方法将 LLVM 引入到编译器实现中。
第4章 - JIT 与优化器支持。基于 LLVM 为 Kaleidoscope 实现 JIT 编译功能,同时加入对于优化器的支持。
第 5 章 - 语言扩展:控制流。对 Kaleidoscope 进行语言扩展,实现控制流能力(if 语句和 for 语句)。同时,简单介绍了 SSA 的构造。
第6章 - 语言扩展:自定义运算符。对 Kaleidoscope 进行语言扩展,实现自定义运算符能力,允许用户自定义一元运算符和二元运算符(支持运算符优先级)。
第7章 - 语言扩展:可变变量。对 Kaleidoscope 进行语言扩展,实现局部变量和赋值操作符。同时,介绍了一种隐式的方法让 LLVM 自动构造 SSA。
第8章 - 目标文件编译。介绍了如何基于 LLVM IR 编译生成目标文件。
第9章 - 调试信息。支持调试器,添加调试信息,允许在 Kaleidoscope 函数中设置断点,打印参数变量和调用函数。
第10章 - 总结。主要讨论语言扩展的进阶内容,比如指针、垃圾回收、异常、调试等。
https://chainstack.com/ethereum-clients-geth-and-erigon
现在我们回顾了以太坊网络和 EVM 的基础知识,让我们来谈谈以太坊客户端。有多种类型的客户端是用不同的编程语言编写的。这是可能的,因为所有客户端都遵循以太坊黄皮书中概述的规范,其中描述了 EVM 的工作原理。虽然有很多,但现在最流行的两个是 Go Ethereum (Geth) 和 Erigon,以前称为 Turbo-Geth,我们将重点关注它们。 Learn About Ethereum Clients Geth and Erigon - Chainstack Blog
#杂
“亲眼看着 databend/datafuse/fuse-query 先从豆瓣广播上的一个个想法变成了代码然后变成了产品最后变成了公司,当时还是豆瓣广播重度用户的我天天在豆瓣广播上追 @BohuTANG
的关于数据库的想法,时隔几年后偶然在 GitHub 上看到了 databend,还是很震惊的”

https://twitter.com/yetone/status/1697072792305610931
Unlock Music #开源项目推荐

「Unlock Music」是一个用于移除已购音乐的加密保护的开源工具。使用本工具,您可以解密从QQ音乐、网易云音乐、酷我音乐、酷狗音乐等音乐平台下载的仅会员期间可播放的音乐文件,解密后的文件可以导入其他离线播放器播放。

本项目曾在Github上遭到数次DMCA Takedown(版权侵权投诉),最终变为自托管项目。
目前,自托管站点的域名已经被项目维护者手动屏蔽中国大陆地区IP访问。

该工具完全开源免费,您无需支付任何费用。但使用本工具,您首先要成为任意一个受支持音乐平台的会员,由此可能会带来一定的开销。
此外,如果您使用安卓系统,您或许需要获取Root权限才能正常解密QQ音乐下载的加密音乐文件,由此可能带来手机保修失效的风险。
解密音乐的行为并不道德,如有能力,请支持正版

📦 仓库地址
⚙️ 演示站点地址
注:此推荐无商业目的,此项目有官方电报交流群组,具体请自行查阅项目README。

投稿:@ZaiHuaBot
频道:@TestFlightCN
陶哲轩6000字详述:计算机辅助数学证明的历史 | link
deck gallery —— 幻灯片收集

专门收集整理幻灯片的网站,目前有 20 个,大多数都是产品发布会的幻灯片或者设计规范。
kubeasz: 使用Ansible脚本安装K8S集群,介绍组件交互原理,方便直接,不受国内网络环境影响

kubeasz 致力于提供快速部署高可用k8s集群的工具, 同时也努力成为k8s实践、使用的参考书;基于二进制方式部署和利用ansible-playbook实现自动化;既提供一键安装脚本, 也可以根据安装指南分步执行安装各个组件。
一份从键盘设计、硬件制作、接线、到软件控制的手工接线键盘的完整指南 ​​​| link | #指南
Back to Top