距首次發布近兩年半后,數據交換格式和RPC系統Cap'n Proto發布了0.6版,其中添加了對Windows支持,并強化了安全,此外還有其它一些新特性。
據Cap'n Proto的作者Kenton Varda介紹,發布上的顯著延遲并非是疏于開發,事實上該項目一直在進行開發,這要歸因于并未優先考慮將其父項目Sandstorm.io移植到Windows平臺。現在由于Microsoft編譯器提供了對當代C++的支持,向Windows平臺的移植變得容易了,其中涉及序列化、動態API、模式解析器、RPC和工具,以及使用輸入完成接口(I/O completion port)實現的異步I/O架構。此外,為維持移植到Windows平臺移植后的健康性,Cap'n Proto團隊還建立了持續集成。
除了全面支持Windows平臺之外,最新版的Cap' Proto還做了一些改進以更安全地面對可能的攻擊。其中包括對指針驗證的改進,用于在編譯時和更徹底的測試中檢測整型溢出。
新的0.6版對Cap'n Proto生態系統添加了兩個有用的組件:
libcapnp-json。它是一個JSON與Cap'n Proto的雙向轉換器,意在簡化基于Cap'n Proto前端對基于JSON前端的集成。 libkj-http。它是一個基于異步I/O的極簡HTTP庫,目前依然在開發中。作為一種數據交換格式,Cap'n Proto無需在內存中編碼和解碼消息,意在提供比JSON或Protocol Buffers等廣為采用的格式更優的解決方案。在實現中,Cap'n Proto使用了類似于編譯器所使用的方式,以二進制格式存儲數據,但是以與平臺無關的方式實現的。Cap'n Proto的創立者Kenton Varda在Google工作期間也是Protocol Buffers(Protobuf)的作者,他指出:
Cap’n Proto源自于對Protobuf的多年工作經驗、對用戶反饋的傾聽以及對如何給出更好實現的考慮。
Cap'n Proto還給出了一些規定,以確保在格式中添加新字段時的向后兼容性。其它主要特性包括:增量處理消息的能力(因為外部對象完全先于內部對象出現)、對任一字段的隨機訪問(甚至在消息被完全接收之前),以及生成更小的代碼和運行時庫。
查看英文原文: Cap’n Proto Interchange Format Adds Windows Support and Many New Features