惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
GbyAI
GbyAI
Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog
B
Blog
博客园 - 叶小钗
V
Visual Studio Blog
小众软件
小众软件
阮一峰的网络日志
阮一峰的网络日志
博客园 - 聂微东
S
SegmentFault 最新的问题
Engineering at Meta
Engineering at Meta
博客园 - Franky
V
V2EX
人人都是产品经理
人人都是产品经理
H
Hackread – Cybersecurity News, Data Breaches, AI and More
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
月光博客
月光博客
IT之家
IT之家
T
The Blog of Author Tim Ferriss
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
C
Check Point Blog
N
Netflix TechBlog - Medium
博客园 - 【当耐特】

Ruby China

云端 Coding 插件:让 AI 大模型为你的网页实时提优化建议 昨天旁边研究生在学数据库,看范式,我当年也学过,但是工作了以后,发现根本用不到 vs eclipse vim 哪里落后了 金山毒霸推出青春版是不是认为自己不行 【自荐】PriTime:一个可自托管的多端待办任务清单、时间管理应用 omarchy 竟然还有中文宣传 绿标 apollo 音乐逼系统重启 UI 做了一个 zero-noise 的“赛博禅师”:在信息过载时代做个极简 Web 实验 DHH 发布了 agentic linux,作为 Ruby China 老用户也开源发布了 agentic workspace 又拍云的公司好像出问题了 notification 页面出错 【远程】【区块链】后端工程师 MEME 交易方向,欢迎大家来聊 【举报】web3 全栈工程师为 带有病毒的钓鱼贴!各位不要上当! Server+ Training in Pune | Master Server Administration Skills 开发 APP 或小程序,大家后端使用的什么 admin 或 cms 或其它什么解决方案? Omarchy 4 aka Quattro 【杭州】招聘 Ruby on Rails 全栈开发,欢迎加入! 针对 Rails 的 AI 模型评测报告 [深圳] AI 智能硬件 + App 海外产品,招 Ruby on Rails 工程师 想不到浓眉大眼的 DHH 和 Jason Lee 也变心了 懂业务的人用 AI 写代码,反杀了程序员… 台灣小雨外送茶 line 外約瀨 fba988 或 jkf44 和 TG 喝茶@fb15800 現金消費不喜可退換 Gleezy 群組搜 fb158 保證安全健康#高中生#在校生大學生#模特空姐 台灣小雨外送茶 line 外約瀨 fba988 或 jkf44 和 TG 喝茶@fb15800 現金消費不喜可退換 Gleezy 群組搜 fb158 保證安全健康#高中生#在校生大學生#模特空姐 台灣小雨外送茶 line 外約瀨 fba988 或 jkf44 和 TG 喝茶@fb15800 現金消費不喜可退換 Gleezy 群組搜 fb158 保證安全健康#高中生#在校生大學生#模特空姐 pearls 个人开发者做的两个 Chrome 小扩展(基金估值 / 金价),欢迎试用 问一下各位 codex 怎么突破子代理上限哇 jupyter notebook 支持 ruby 怎么不见有人用呢 ruby 有没有 pylance 级别的 lsp? 消失 14 年后回 Ruby China 报到
關於 spinel 的原理和侷限
mizuhashi · 2026-05-30 · via Ruby China

今天和 claude 一起研究了一下 https://github.com/matz/spinel ,大概知道了它和別的靜態語言有什麼不同。

spinel 的特點是需要對整個程序進行類型推斷,也就是一個方法的類型,實際上是由所有 call site 決定的。當看到一個方法調用的時候,分析器會把參數的類型記下來,然後把它疊到方法的定義上。例如一個方法factorial(n),當分析器看到factorial(1) factorial(2)的時候,它就知道 factorial 能接受 integer,如果整個程序都沒有傳別的類型,那麼它就能斷定 n 是 integer,然後可以輸出很高效的 c 代碼。但如果分析器之後看到 factorial('1'),n 就會變成 integer | string,會需要額外處理多態,實際生成的 c 代碼就會包含這部分的處理。

這樣做的後果是,整個程序如果變了一行,之前的推導就要全部重新來過,因為這個是基於整個程序的推導。其他靜態語言由於會聲明函數的類型,推導對於函數體內和函數外是獨立的,因此一個函數在編譯了之後,如果簽名沒變就可以一直用,可以做到增量編譯。

crystal 實際上也是用整個程序做推斷的,所以會有和 spinel 一樣的侷限,沒辦法做增量編譯。