Archaeopteryx: A Ruby MIDI Generator [video]2 months agohttps://www.infoq.com/presentations/archaeopteryx-bowkett/Giles Bowkett在RubyFringe上展示了Archæopteryx MIDI生成器,称其为革命性的。该演讲被描述为幽默、政治且实用,捕捉了会议的精神。Bowkett身兼艺术家、音乐人、Ruby开发者、活动家及开源贡献者等多种角色。RubyFringe是一场前卫的会议,聚焦新兴Ruby项目和社区推动者。
How to License and Distribute a Private Ruby Gem2 months agohttps://keygen.sh/blog/how-to-license-and-distribute-a-private-rubygem/这篇博文虽已过时,但对于兼容S3的发行方案仍有参考价值;Keygen现已提供官方Rubygems引擎。Keygen可用于授权和分发私有Ruby gem,类似于之前针对Docker、Node包和Electron应用的指南。开源核心授权模式(例如Sidekiq Pro)是商业gem的流行商业模式。构建Ruby gem的步骤:创建目录结构、定义类、创建gemspec文件、使用`gem build`命令构建gem。使用`gem generate_index`生成私有gem源索引,以产生所需文件(specs、quick spec等)。使用Keygen CLI将gem发布到Keygen:设置环境变量、创建发布版本、上传工件(gem、索引文件、quick spec),然后发布并标记该版本。通过将许可证令牌添加到Gemfile源URL(例如`https://license:TOKEN@api.keygen.sh/...`)来安装gem。可以使用Rakefile自动化此过程,以便轻松发布新版本的gem。
A multi-entry CFG design conundrum2 months agohttps://bernsteinbear.com/blog/multiple-entry/?utm_source=rssZJIT使用高级SSA中间表示(HIR)将Ruby的YARV字节码编译为机器码,该表示使用控制流图和块参数而非phi节点。Ruby的默认位置参数在调用时求值,导致字节码中有多个入口点,具体取决于传递的参数数量;JIT必须处理这些单独的入口块。HIR支持多个函数入口点(解释器、JIT和默认参数存根),每个入口点都有镜像函数参数的块参数。多个入口点使支配者分析复杂化:没有单一的起始块,因此反向后序遍历和支配者计算需要特殊处理。考虑了三种方法:(1)在支配者算法中特殊处理入口块,(2)合成一个超级入口块(带有虚拟或真实块和LoadArg指令),(3)为每个入口点复制CFG。选择的方法是2.b:合成一个带有LoadArg指令的超级入口块,这为未来的特化提供了灵活性,而无需强制代码复制。该问题类似于在后支配者分析中处理多个返回指令,常见的解决方案是分支到单个返回。
Calling all open source maintainers working with Ruby2 months agohttps://www.rubyforum.org/t/calling-all-open-source-maintainers-working-with-rub...面向Ruby用户的共享论坛旨在减少碎片化,节省项目维护者时间。批评者警告信息重复、垃圾邮件以及集中化可能造成单点故障。支持者认为该论坛并非要取代所有沟通渠道,而是为了改善协作并减少碎片化。维护者可以选择参与或使用自己的替代方案;去中心化得到尊重。该论坛将是一个公共、长期的平台,支持讨论内容的便捷迁移进出。