#awaitjavascript
#cloudsith #registryhtml
Cloudsmith是Puppet Labs旗下的DevOps平臺,目前支持Cargo。你能夠把Cloudsmith做爲crates.io以外的私人registry。前端
本文介紹瞭如何使用cloudsmith-cli工具將你的crate發佈到它的平臺上。java
Read Moreweb
cargo registry 相關文檔chrome
#concurrency #hashmapapi
該論文經過實現一個併發無鎖HashMap來研究Rust類型系統如何影響併發數據結構的開發和改進。他們的代碼庫concache在GitHub上公開,是Rust語言中最快的併發HashMap之一,能夠幫助下降併發程序中的瓶頸。數組
Read More瀏覽器
Paper pdf前端工程師
concache
#UnitTest #chrome
stretch的做者寫的一篇博客。stretch是一個跨平臺的FlexBox引擎。在Visly公司,該做者正參與一個爲前端工程師構建的設計工具,其中用到FlexBox,須要在不使用WebView的狀況下保持Web、iOS和Android三端保持相同的佈局。意味着在移動設備上覆制Web的佈局。
這篇文章裏,做者介紹了使用stretch的單元測試方案,是一套自動編寫自動化測試的方案,他們稱其爲gentest系統。大概原理以下圖:
全部的測試用例都用html文件來描述,而且包含id =「test-root」
的佈局。而後gentest使用WebDriver將此文件加載到Chrome head-less瀏覽器中。加載後,gentest將經過WebDriver向瀏覽器詢問每一個DOM節點的樣式,大小和位置等信息,而後利用此信息,gentest再生成Rust單元測試,用於構建三端等效的FlexBox樹給stretch api使用。最後能夠統一經過cargo test
來完成測試。
gentest的另外一個好處是,由於每一個測試只是一個html文件,只需打開文件就能夠在瀏覽器中顯示它。而且他們還利用gentest生成一套基準測試,確保性能不會退化。
gentest有什麼黑科技嗎?
它也是開源的,我翻了一下源碼,主要是三步:
使用quote!來構建待生成測試代碼的模板(TokenSteam)
將這些模板填充之後從TokenSteam轉稱字符串。
使用fs::write
寫到指定的目錄文件中。
Read More
stretch
webdriver
gentest
#sed #X12
x12pp是用Rust實現的能夠漂亮地打印X12 EDI格式的Cli工具。做者寫了一篇博文,闡述了他使用sed命令處理X12的問題,這些問題促使他使用Rust來寫x12pp。而且寫出來的工具性能上能夠輕鬆擊敗sed這樣的通用工具。
x12pp
Read More
#c
該reddit帖子做者用C和Rust分別寫了一個一樣功能的示例,發現rust編譯器不如clang編譯器優化的完全,clang編譯器生成的彙編代碼最簡單。
int bongo(int num) {
int a = 0;
for (int x = 0; x < num; x += 2) {
if (x % 2) {
a += x;
}
}
return a;
}
Rust代碼
pub fn bongo(num: i64) -> i64 {
let mut a = 0;
for x in (0..num).step_by(2) {
if (x % 2) != 0 {
a += x
}
}
a
}
評論中有人給出緣由,Rust代碼中for循環的範圍和step_by比較複雜。由此還貼出兩個相關issues。
Read More
step_by issues 1
step_by issues 2
#parser
combine和nom的功能相似,但它的特色是創建在Rust的trait和類型系統之上,而不是宏。
完整的更新列表
#cli
rust-latest
#cargo
cargo vender支持將crates.io中的依賴項保存到你本地目錄下。
Read More
#glibc
Rust和Glibc在動態連接的時候可能會失效,該文做者建議使用自定義工具鏈來解決此問題。
Read More
#route
一個應用程序的路由由Url Path和查詢參數組成。app-route庫能夠將這樣一個路由解析爲Rust的類型結構。
let path: UsersListRoute =
"/groups/4313145/users?offset=10&limit=20&friends_only=false&keyword=some_keyword"
.parse()
.unwrap();
assert_eq!(
path,
UsersListRoute {
group_id: 4313145,
query: {
UserListQuery {
limit: Some(20),
offset: Some(10),
keyword: Some("some_keyword".to_string()),
friends_only: false,
}
}
}
);
app-route
#javascript
關於JavaScript二進制AST
隨着網站變得愈來愈複雜,JavaScript源代碼的數量不斷增長。依賴於大型JavaScript代碼庫會致使網站啓動緩慢 - 一般速度慢得使人沒法接受。這是由於存在兩個瓶頸:解析和字節碼編譯JavaScript。不幸的是,瀏覽器幾乎達到了兩種操做的效率峯值。
咱們(Mozilla,Bloomberg,Facebook,CloudFlare)目前正致力於針對JavaScript的特定領域編碼,稱爲「BinAST」(「JavaScript二進制AST」的縮寫)。 JavaScript二進制AST旨在打破瓶頸。當前的高級原型已經在全部最多見的框架上顯示了JS解析改進了30%-50%,只需更改格式,咱們相信咱們能夠進一步提升這一改進。編碼能夠構建爲webdev工具鏈的一部分,或者由代理或CDN注入,所以能夠在不更改原始網站的狀況下自動提升最終用戶的性能。
此編碼目前在JavaScript TC39標準化過程當中。它能夠與現有的壓縮技術(gzip,brotli等)一塊兒使用
binjs-ref
#UITest
trybuild