Files
l-language/SECURITY.md
T
Serendipity 3b7bab1e1b feat: L Language v0.1 编译器完整实现
5 阶段编译流水线: 词法分析 → 语法分析(Pratt) → 语义分析(类型推断) → LLVM IR → .exe

模块:
- lexer: 手写状态机, 40 种 Token, // 和 /* */ 注释
- parser: Pratt 表达式解析(9 级优先级) + 递归下降语句/函数
- ast: 14 种节点类型 + 工厂函数
- sema: 作用域链符号表 + 类型推断 + 类型检查
- codegen: AST → LLVM-C API, print_i64/f64/bool 内建
- driver: 命令行 + 流水线串联 + 错误报告
- util: Arena bump allocator (8MB)

测试: 65 单元测试(词法41+语法15+语义9) + 5 集成测试 全部通过

语言特性: i64/f64/bool/void, let不可变变量, if/else, while, 递归函数
2026-06-05 00:26:59 +08:00

41 lines
1.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 安全策略
## 报告漏洞
如果你发现安全漏洞,请**不要**在公开 Issue 中报告。请通过以下方式私下报告:
- GitHub: 在 [Security Advisories](https://github.com/LHY0125/l-language/security/advisories) 页面提交
- 邮件: 联系项目维护者
我们会在 **48 小时内**确认收到报告,并在 7 天内提供初步评估和修复计划。
## 安全最佳实践
### 作为用户
- 仅从 [Releases](https://github.com/LHY0125/l-language/releases) 页面下载编译好的二进制文件
- 编译的 `.l` 源文件在当前目录生成 `.o``.exe` 文件
- 不要编译不可信来源的 `.l` 源文件
### 作为开发者
- 永远不要在源代码中硬编码密钥或凭据
- 所有外部输入(源文件)在系统边界验证
- Arena 分配失败时逐层返回 NULL,不做静默回退
- `vsnprintf` 缓冲区用完时检查返回值
- `strtoll` / `strtod` 解析 Token 值前检查长度边界
## 已知限制
- v0.1 不支持沙箱或权限控制 — 编译出的可执行文件具有当前用户的所有权限
- `print_*` 内建函数直接调用 `printf`format string 为硬编码常量,无注入风险
- 不支持文件 I/O、网络、外部 FFI 调用(v0.1 语言能力有限,攻击面极小)
## 支持版本
| 版本 | 支持状态 |
|------|----------|
| v0.1.x | 活跃开发中 |
> v0.1 处于早期开发阶段,API 和语言语法可能发生破坏性变更。生产环境请勿使用。