Mongory, let you query everywhere!
這是一個從 Ruby JSON 過濾器開始,逐步演進為跨語言支援、擁有 C 核心的通用查詢引擎的 side project。
在這 30 天內,我會完整分享 Mongory 的開發過程:從 AST 設計、matcher 實作、效能瓶頸,到 C 擴充、multi-platform gem 打包,以及 Go/Python/JS 的橋接規劃。
喜歡從「解決痛點」出發、一路打怪成長的你,不妨一起來看這趟技術旅程。
筆者在 C 的世界第一站,選擇先把地基打好:memory pool因為在 C 裡要 hash 沒有、陣列也無法自動擴容要物件需要自己 malloc/free,一...
在 C 裡面動態帶進來一個 void*,根本不知道他是什麼型別要嘛一路 cast,要嘛寫一堆 if/else 判斷,邏輯又醜又慢筆者直接把「值的世界」統一起來:...
這一篇承接 Day 11 的 mongory_value,筆者帶讀者走一遍 C core 裡的動態陣列 mongory_array:為什麼長這樣、怎麼用、有哪些...
Day 13:Hash Table(Table):bucket/雜湊/衝突策略取捨 延續 Day 12 的 mongory_array,筆者今天帶讀者把 mon...
今天把 Mongory 的 Matchers 架構一次講透:骨架(base/composite/explainable/traversable)、建構 → 匹配...
今天會接著講 Ruby <-> C 的橋接在 Clang 不知道經歷了多少次 segmentation fault經過了無數次的通靈,mongory...
本篇聚焦 Mongory 在跨語言邊界的資料轉換:Ruby 的高階物件,如何在 C Core 中以 mongory_value 表示;又如何在匹配完成後安全地「...
本篇聚焦 Ruby bridge 與 C Core 之間的生命週期協作:memory pool 如何與 Ruby GC 配合,extern_ctx 如何穩定保存...
這一天,是筆者在 Mongory C 擴充完成後的第一波震撼教育:既然都進了 C,為什麼還是比 plain Ruby 慢?數據擺在眼前,在初版 bridge 完...
承接 Day 18 的震撼:初版 C bridge 大約比 plain Ruby 慢 3 倍。今天聚焦兩個「小改動、大成效」的優化:pool->reset...