
Flash C 发布:面向 Linux x86-64 的开源 C 编译器与类 Turbo-C IDE
来源标题:Flash C – Open-source C Compiler and (Turbo-C like) IDE for Linux x86-64
Flash C 是一个面向 Linux x86-64 的开源 C 编译器,同时内置全屏文本模式 IDE,支持 ANSI C89 及部分 C99 特性,不支持 C++。项目集成编辑器、编译器、链接器、运行时库、调试器与帮助系统,并提供 48 项可开关优化和源码级调试功能。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
一个面向 Linux 的小型 C 编译器,以及一个全屏文本模式 IDE。
Flash C 编译 C(ANSI C89),并带有少量 C99 的便利特性。不支持 C++。
完整工具链集中在一处。编辑器、编译器、链接器、运行时库、调试器和帮助系统都属于这个项目。
真正的优化器。48 项可切换的优化:常量折叠、全局数据流分析、SSA、内联、循环优化、寄存器分配、全程序优化遍以及按 profile 引导的优化。详见 Optimizations。
源码级调试器,支持断点、监视、表达式求值和调用栈。
按函数链接。只有程序实际用到的库函数才会进入可执行文件。
经典诊断信息。错误示例:hello.c 5: Undefined symbol 'x' in function main。
为 IDE、语言以及每个库函数提供在线帮助,并附有可复制到编辑器中的示例。
快速开始
安装发行版(Linux x86-64):从 Releases 页面下载 flash-c-<version>-linux-x86_64.tar.gz,然后
tar xzf flash-c-.tar.gz cd flash-c-/ ./install.sh # installs to ~/.local; use --prefix DIR or run as root for /usr/local
./install.sh --uninstall 可将其卸载。安装是可选的:解压后的文件夹也可以原地运行,使用 ./bin/fc 和 ./bin/fcc。发行版的制作方式见 releasing。
从源码构建:需要 C 编译器(gcc 或 clang)、make,以及至少 80×25、支持 UTF-8 的终端。当 COLORTERM=truecolor 时使用 24 位色;否则使用 16 色 ANSI。
make # builds build/fc and build/fcc ./build/fc hello.c # open (or create) hello.c in the IDE ./build/fcc hello.c # or compile it directly; this produces ./hello ./hello
make test 运行整个测试套件,make install 将两个程序和帮助文件复制到 /usr/local。
在 IDE 中输入程序,按 F2 保存,按 F9 构建,按 Ctrl+F9 运行。如果构建失败,Message 窗口会列出错误;在某条错误上按 Enter 可跳转到对应行。详见用户指南。
错误会带你跳到对应行。Message 窗口列出错误和警告;用 Alt+F7 和 Alt+F8 让光标跟随它们。
菜单和对话框。每个命令都在菜单中,状态行上有一行提示。Options 对话框保存编译器、链接器和环境设置。
优化。每项优化都有自己的复选框,状态行上会显示说明。Help 按钮会打开对应的帮助页面。
调试器。用 Ctrl+F8 设置断点,用 F7 和 F8 单步执行,并观察值的变化。
帮助。F1 打开目录;Ctrl+F1 显示光标下单词对应的主题,例如 printf。
文档 内容 用户指南 使用 IDE:窗口、菜单、按键、编辑器、项目、调试器、在线帮助。 编译器参考 fcc 开关、Flash C 接受的语言、诊断信息、优化、按 profile 引导的优化、链接。 库参考 运行时库的每个头文件和函数,以及实现它的模块。 架构说明 编译器、优化器、库、IDE 和调试器内部如何工作;面向贡献者。 证据 IDE 结构是如何从对参考 IDE 的研究中得出的。 项目布局 src/compiler/ 词法分析器和预处理器、解析器和类型检查器、优化器、x86-64 代码生成器和 ELF 写入器、编译器驱动程序 src/ide/ 终端层、窗口、菜单、对话框、编辑器、帮助、调试器、命令 src/cli/ fcc 主程序 runtime/ 用 Flash C 编写的运行时库(lib/)及其头文件(include/) help/ 扩展在线帮助(*.fch),由 tools/helpgen 生成 tests/ 编译器、诊断、优化器、库、IDE 和调试器测试 tools/ 生成器(库文档、帮助文件、截图)和开发辅助工具 docs/ 文档,以及文档中使用的截图 analysis/ 对参考 IDE 的研究 贡献 欢迎提交 bug 报告和 pull request;工作流程、代码风格和测试见 CONTRIBUTING.md。
make test 按顺序运行:编译器对 gcc 的测试(tests/run.sh)、诊断文本(diag.sh)、命令行开关(options.sh)、每项优化(opt.sh)以及一个模糊测试:分别在有优化和无优化的情况下编译随机程序并比较输出(optfuzz.py)、帮助示例(helpexamples.py)、库(libtest.sh),以及通过伪终端驱动 IDE、项目和调试器(ide_smoke.py、project_smoke.py、debug_smoke.py)。
本仓库中的截图由真实 IDE 生成:构建后运行 python3 tools/screenshots.py 可重新生成。
本项目仅将 Turbo C(TC)作为参考,不使用它的任何资源:不包含其代码、库、头文件、帮助文本或其他文件。本仓库中的所有编译器代码和标准库源码都是原创的生成代码。编译器和 IDE 是通过研究 Turbo C++ 编译器的可执行二进制文件开发而成的,该文件可在 https://archive.org/details/turboc3.1_202112 获取。IDE 结构(菜单表、对话框控件、状态行、颜色组、编译、make 和运行行为)来自这项研究;证据和方法见 analysis/EVIDENCE.md。原始提取输出不随本仓库分发。
Flash C 以 MIT License 发布。
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。