Elixir拥抱Python:Pythonx让Livebook实现多语言编程

2025-02-25

为了解决Elixir在数据科学领域与现有Python生态系统整合的难题,本文介绍了Pythonx项目。Pythonx将Python解释器嵌入Erlang虚拟机,实现了Elixir和Python之间的数据自动转换和代码评估,并简化了虚拟环境管理。通过Pythonx,开发者可以在Livebook笔记本中无缝地混合使用Elixir和Python代码,极大提升了开发效率,同时也提升了Livebook的实用性。文章还讨论了GIL锁等潜在问题及替代方案,并介绍了Fine项目,一个用于简化NIF开发的C++库。

阅读更多
开发 Livebook

Elixir 的集合论类型:解决库数据演进的难题

2025-01-14

本文探讨了如何在 Elixir 中使用集合论类型来解决静态类型语言中库的公共数据定义向后兼容性问题。作者以一个 C 和 Rust 库交互的例子说明了现有类型系统在处理数据结构演进时的不足,并提出了一种基于结构子类型和版本修订的解决方案。这种方案允许库在不破坏现有用户的情况下扩展数据结构,通过编译器自动验证类型安全,并支持库和应用之间不同版本的数据协同工作。

阅读更多
开发 数据演进

使用 Ecto 和 PostgreSQL 实现软删除

2024-08-17

本文介绍了如何使用 Ecto 和 PostgreSQL 通过规则和视图实现软删除。文章详细讲解了如何添加 deleted_at 列、创建 PostgreSQL 规则将删除转换为更新、使用视图过滤已删除数据等步骤,并探讨了 Ecto 如何处理删除时出现的 stale records 问题。此外,文章还介绍了如何通过禁用规则来实现数据的彻底删除,以及如何使用触发器将已删除数据复制到其他表中。

阅读更多
52
未分类 Ecto