🌘 Odin 語言若支援巨集(Macros)的設想
➤ Odin 設計哲學:務實主義下的元程式設計考量
https://www.gingerbill.org/article/2025/07/31/if-odin-had-macros/
本文探討了 Odin 程式語言是否應納入類似於巨集(macros)的元程式設計機制。作者 GingerBill 強調 Odin 的設計哲學是以實用主義為導向,旨在為特定問題提供更優雅、更符合語言特性的解決方案,而非盲目追隨通用功能。雖然作者承認巨集與元程式設計的潛在價值,但他認為 Odin 的現有語法和設計已能有效處理許多過去可能需要巨集才能解決的問題。文章以 Go 語言的推式迭代器(push-based iterators)為例,展示了一種不依賴閉包(closures)且極具 Odin 風格的實現方式,能生成高效的程式碼。作者最終總結,儘管這種特定於迭代器的「類巨集」功能在理論上可行,但考量到 Odin 的核心設計原則和避免「滑坡效應」(slippery slope)——即一旦允許特
#程式語言設計 #Odin #巨集 #元程式設計 #設計哲學
If Odin Had Macros - gingerBill

🌘 使用 Vim 巨集處理 Beancount 資料的進階技巧
➤ 從 Vim 基本移動到複雜巨集,解決 Beancount 帳務資料的棘手問題
https://tangled.sh/@adam.tngl.sh/vim-beancounting
作者分享如何運用 Vim 的進階移動和巨集功能,解決 Beancount 帳務資料中常見的內部轉帳紀錄處理難題。面對格式混亂、資訊殘缺的 CSV 或 PDF 匯出檔案,特別是內部帳戶間的轉帳,作者說明瞭如何透過 Vim 的文字編輯能力,從基本的移動指令逐步建構出複雜的巨集,以自動化清理和連結這些交易記錄,最終將其轉化為 Beancount 可用的標準格式,從而有效管理個人財務。
+ 這篇文章對於 Vim 的應用層面提出了新的思考,尤其是將其用於處理結構化但混亂的金融資料。作者的解決方案很有啟發性。
+ 對於像我這樣對 Beancount 有興趣但又苦於資料匯入的人來說,這篇文章提供了非常實用的技術指導。Vim 的確是處理這類任務的利器。
#Vim #Beancount #資料處理 #程式設計 #巨集
@adam.tngl.sh/vim-beancounting

Vim macros for beancount

🌘 Rust 巨集工具,用於批次處理昂貴操作
➤ 簡化複雜的非同步批次處理,釋放潛在效能
https://github.com/hackermondev/batched
這是一份關於 Rust 巨集 `batched` 的介紹,它能將耗時的非同步操作進行批次處理,以提升效能。該巨集允許使用者自訂批次大小、併發數量以及等待視窗時間,並且支援將單一結果廣播給所有請求,或根據輸入順序回傳多個結果。它與 Tokio 非同步運行時整合,並可選擇性地加入 Tracing 和 OpenTelemetry 追蹤功能,為開發者提供了一個有效管理高負載非同步任務的解決方案。
+ 這是個很棒的工具!能大幅減少對資料庫的重複請求,對於處理大量資料非常實用。
+ 巨集的使用方式很直觀,但需要注意錯誤處理,特別是當目標函數回傳非 Cloneable 的錯誤類型時。
#Rust #巨集 #批次處理 #非同步 #效能優化
GitHub - hackermondev/batched: rust macro util for batching expensive operations

rust macro util for batching expensive operations. Contribute to hackermondev/batched development by creating an account on GitHub.

GitHub
🌘 EveeifyEve 網站:為什麼 Cargo Check 如此緩慢?
➤ 揭開 Cargo Check 緩慢的神祕面紗:禍首竟是巨集?
https://eveeifyeve.pages.dev/blogs/cargo-check-slow.mdx/
這篇文章深入探討了 Rust 編譯器指令 `cargo check` 執行緩慢的原因,作者透過實際測試與分析,最終發現問題核心在於處理巨集 (proc macros) 時,`coherent_trait` 和 `impl_trait_header` 這兩個環節消耗了最多的時間。作者建議使用者應避免使用巨集以提升編譯速度。
+ 寫得很詳細,終於知道 `cargo check` 為什麼每次都要等這麼久了。
+ 感謝作者的深入分析,這對於優化 Rust 開發流程非常有幫助!
#程式開發 #效能分析 #Rust #Cargo #巨集
EveeifyEve Website

I enjoy programming I have many projects. And I'm friendly!

🌘 Rust 巨集進階應用:使用 derive-deftly 簡化程式碼
➤ 告別重複勞動,打造客製化 Derive 巨集新境界
https://diziet.pages.torproject.net/rust-derive-deftly/latest/guide/
本文介紹 Rust 的 `derive-deftly` 函式庫,它提供了一種更簡便的方式來定義自訂的 `derive` 巨集。作者透過實際範例展示,如何利用 `derive-deftly` 的範本語言,快速為結構體(struct)自動生成欄位存取器(accessor)函數,有效減少手動撰寫重複程式碼的時間與潛在錯誤。文中還闡述了 `derive-deftly` 的優勢、功能範圍以及現有限制,並預告後續將深入探討其進階用法。
+ 真是太實用了!以前寫 getter/setter 都要複製貼上,現在有了 `derive-deftly` 感覺像有了超能力。
+ 看了範例,`derive-deftly` 的範本語法很有趣,雖然剛開始要花點時間學習,但對應的效益看起來非常高。
#Rust #程式設計 #巨集 #程式碼生成
Introduction - Advanced Rust macros with derive-deftly

🌘 放置函數:透過巨集實現原地建構的 Rust 語言特性提案
➤ 一種利用 `proc-macro` 實現的 Rust 原地建構實驗性語言特性
https://blog.yoshuawuyts.com/placing-functions/
本文探討了「放置函數」的概念,這是一種允許函數回傳值在呼叫者堆疊框架中直接建構,而非在函數自身堆疊框架中建構的語言特性。作者透過一個名為 `placing` 的 `proc-macro` 程式庫,展示瞭如何在 Rust 中實現此特性,將函數的建構過程拆解為「創建記憶體位置」與「初始化值」兩個階段。文章深入解析了 `#[placing]` 巨集如何將原有的結構體與方法轉換,使其能夠利用 `std::mem::MaybeUninit` 進行安全的原地建構,並探討了此特性在效能提升及支援其他進階功能(如 trait 中的異步函數)上的潛力。
+ 這種透過巨集實現的方案聽起來很酷,但看起來需要不少樣板程式碼。如果能整合進 Rust 編譯器本身,應該會更為簡潔。
+ 原地建構對於效能敏感的程式碼來說
#Rust #語言設計 #編譯器 #巨集 #原地建構
placing functions

🌘 使用巨集/統一編譯單位(Single Translation Unit)的工作方法- Austin Morlan
➤ 巨集/統一編譯單位的編譯方法及其優缺點
https://austinmorlan.com/posts/unity_jumbo_build/
文章介紹了使用巨集/統一編譯單位(Single Translation Unit)的編譯方法,詳細解釋了傳統的編譯方法中存在的問題,並提出了使用巨集/統一編譯單位的優點和缺點。
+ 這種編譯方法似乎可以提高效率,但也需要注意其缺點。
+ 文章很清晰地解釋了問題和解決方案,很有幫助。
#編譯 #C/C++ #巨集 #統一編譯單位
Working with Jumbo/Unity Builds (Single Translation Unit)

There’s been a lot of talk in recent years about something called a “jumbo build” or “unity build” or sometimes “single translation unit build”. Essentially it’s an alternate way of compiling C/C++ by putting all of the code (headers and source both) into a single file. Some people love them. Some people think they’re evil. I’ve been using them in my personal projects for a while now and thought I’d share my experiences.

🌘 【功能性語言中的去模板套用】
➤ 說明如何在功能性程式中處理繁瑣的模板代碼問題
https://lambdaland.org/posts/2024-05-01_definitely_not_about_monads/
文章描述了作者在使用功能性程式語言(如Elixir)時,遇到了繁瑣的模板代碼問題,並提出瞭解決方案。作者通過對問題分析,介紹了將兩個相互關聯的問題分開處理的方法,以實現清晰、易於維護的功能性代碼。
+ 這篇文章提供了實用的解決方案,對於在功能性程式語言中處理模板代碼問題的開發者很有價值。
+ 好文章!解釋清晰,概念易於理解,對於想學習功能性程式設計的人來說是個不錯的參考。
#程式語言 #巨集 #程式設計
Boilerplate Busting in Functional Languages

This is the story of how I solved a problem (ugly, cumbersome boilerplate code) that I ran into while writing a program in a functional language (Elixir). Functional programming languages often pride themselves on expressiveness and elegance; but occasionally they are not amenable to the most obvious solutions to the problems we wish to solve. In this case, the simplest solution to my problem would have been to have a global mutable variable.

Lambda Land