{"id":45199,"date":"2023-03-05T00:27:33","date_gmt":"2023-01-26T18:38:27","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/45199-2\/"},"modified":"2024-04-29T17:25:32","modified_gmt":"2024-04-29T09:25:32","slug":"45199-2","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/45199-2\/","title":{"rendered":""},"content":{"rendered":"<p>\u3053\u308c\u306f Rust Advent Calendar 2022 \u306e\u30ab\u30ec\u30f3\u30c0\u30fc2\u306e22\u65e5\u76ee\u306e\u8a18\u4e8b\u3067\u3059\u3002<\/p>\n<h1>YJIT\u3068\u306f<\/h1>\n<p>\u79c1\u306f\u4eca\u5e74\u306e7\u6708\u304b\u3089Shopify\u3068\u3044\u3046\u4f1a\u793e\u3067Ruby\u306eJIT\u30b3\u30f3\u30d1\u30a4\u30e9\u3067\u3042\u308bYJIT\u3092\u958b\u767a\u3057\u3066\u3044\u308b\u3002\u3053\u306eJIT\u306f\u4eca\u5e74C\u304b\u3089Rust\u306b\u66f8\u304d\u76f4\u3055\u308c\u305f\u305f\u3081\u3001\u73fe\u8077\u3067\u306f\u696d\u52d9\u3068\u3057\u3066\u30d5\u30eb\u30bf\u30a4\u30e0\u3067Rust\u3092\u66f8\u3044\u3066\u3044\u308b\u3002<\/p>\n<h2>\u5b9f\u7528\u6bb5\u968e\u306b\u306a\u3063\u305fYJIT<\/h2>\n<p>\u304a\u305d\u3089\u304f\u4e16\u754c\u6700\u5927\u898f\u6a21\u3067Ruby\u3092\u4f7f\u3063\u3066\u3044\u308b\u5f0a\u793e\u3067\u306f\u3001\u304a\u5ba2\u69d8\u306e\u304a\u5e97\u306e\u30b5\u30a4\u30c8\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3059\u308b\u30a2\u30d7\u30ea\u306b\u306f\u793e\u5185\u6700\u5927\u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u304c\u6765\u3066\u3044\u3066\u3001\u5b9f\u306f\u6700\u8fd1\u305d\u306e\u30a2\u30d7\u30ea\u307b\u307c\u5168\u53f0\u3067\u6700\u65b0\u306eYJIT\u304c\u6709\u52b9\u5316\u3055\u308c\u305f\u3053\u3068\u304c\u6628\u65e5\u516c\u958b\u60c5\u5831\u306b\u306a\u3063\u305f\u3002\u3042\u307e\u308a\u306b\u3082\u5927\u91cf\u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u304c\u6765\u308b\u306e\u3067\u3001YJIT\u306b\u3088\u3063\u3066\u884c\u306a\u308f\u308c\u3066\u3044\u308bRuby\u30b3\u30fc\u30c9\u5b9f\u884c\u91cf\u306fYJIT\u304c\u4f7f\u308f\u308c\u3066\u306a\u3044\u3082\u306e\u3088\u308a\u3082\u4e16\u754c\u5168\u4f53\u3067\u898b\u3066\u591a\u304f\u306a\u3063\u305f\u306e\u3067\u306f\u306a\u3044\u304b\u3068CEO\u304c\u8a00\u3063\u3066\u3044\u305f\u3002<\/p>\n<p>\u3053\u306e\u898f\u6a21\u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3092\u634c\u304f\u305f\u3081\u306b\u3053\u306e\u30a2\u30d7\u30ea\u306f\u6bd4\u8f03\u7684\u3088\u304f\u30c1\u30e5\u30fc\u30cb\u30f3\u30b0\u3055\u308c\u3066\u3044\u3066\u3001\u591a\u304f\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3067IO\u304c\u5927\u4f53\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u8aad\u307f\u307e\u304f\u308b\u3060\u3051\u306b\u306a\u308b\u306e\u3067YJIT\u304c\u306a\u304f\u3066\u3082\u7d50\u69cb\u901f\u3044\u306e\u3060\u304c\u3001\u305d\u308c\u3067\u3082YJIT\u3092\u6709\u52b9\u5316\u3059\u308b\u3060\u3051\u3067Ruby 3.2\u306e\u30a4\u30f3\u30bf\u30d7\u30ea\u30bf\u3068\u6bd4\u8f03\u3057\u3066\u6700\u592710%\u306e\u9ad8\u901f\u5316\u304c\u89b3\u6e2c\u3067\u304d\u3066\u3044\u308b\u3002<\/p>\n<h2>\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u6539\u5584<\/h2>\n<p>\u305d\u306e\u30c1\u30e5\u30fc\u30cb\u30f3\u30b0\u306e\u7d50\u679c\u304b\u3069\u3046\u304b\u306f\u308f\u304b\u3089\u306a\u3044\u304c\u3001\u3053\u306e\u30a2\u30d7\u30ea\u306eJIT\u306b\u3088\u308b\u751f\u6210\u30b3\u30fc\u30c9\u306f\u305a\u3063\u3068\u8d70\u3089\u305b\u7d9a\u3051\u3066\u3082\u305b\u3044\u305c\u304430~40MiB\u3067\u53ce\u307e\u3063\u3066\u3044\u308b\u3002\u3068\u3044\u3046\u304b\u3001JIT\u3059\u308b\u304b\u3069\u3046\u304b\u306e\u95be\u5024\u3092\u4e0b\u3052\u3066\u3044\u304f\u3068\u672c\u6765\u4e00\u6642\u7684\u306b\u3057\u304b\u5b9f\u884c\u3055\u308c\u306a\u3044\u3082\u306e\u3082JIT\u3057\u3066\u3057\u307e\u3044\u30b3\u30fc\u30c9\u91cf\u304c\u7d50\u69cb\u5897\u3048\u308b\u306e\u3060\u304c\u3001\u3053\u306e\u30a2\u30d7\u30ea\u306e\u672c\u756a\u306e\u6319\u52d5\u3092\u898b\u306a\u304c\u3089Ruby 3.2\u306e\u8a2d\u5b9a\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u30c1\u30e5\u30fc\u30cb\u30f3\u30b0\u3057\u305f\u305f\u3081\u3001\u3044\u3044\u611f\u3058\u306b\u306a\u3063\u3066\u3044\u308b\u3002<\/p>\n<p>\u3053\u3046\u3044\u3063\u305f\u80cc\u666f\u304b\u3089\u3001YJIT\u304c\u751f\u6210\u3057\u305f\u6a5f\u68b0\u8a9e\u306b\u3088\u308b\u30e1\u30e2\u30ea\u6d88\u8cbb\u306fRuby\u30a4\u30f3\u30bf\u30d7\u30ea\u30bf\u672c\u4f53\u304c (10~20\u500d\u304f\u3089\u3044) \u6d88\u8cbb\u3059\u308b\u30e1\u30e2\u30ea\u306b\u6bd4\u3079\u3066\u3082\u6bd4\u8f03\u7684\u5c0f\u3055\u3044\u306e\u3060\u304c\u3001\u6211\u3005\u304cRust\u306e\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u6539\u5584\u3092\u884c\u306a\u3046\u524d\u3001Rust\u306b\u3088\u3063\u3066\u6a5f\u68b0\u8a9e\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u7ba1\u7406\u3059\u308b\u306e\u306b\u6d88\u8cbb\u3057\u3066\u3044\u308b\u30e1\u30e2\u30ea\u304c\u6a5f\u68b0\u8a9e\u306e\u30b5\u30a4\u30ba\u306e5\u500d\u304f\u3089\u3044\u3042\u308b\u72b6\u614b\u3060\u3063\u305f\u3002<\/p>\n<p>\u3053\u306eRust\u306b\u3088\u308b\u30e1\u30e2\u30ea\u6d88\u8cbb\u304c\u73fe\u5728\u3067\u306f\u3001\u4fdd\u5b58\u3057\u3066\u3044\u308b\u60c5\u5831\u3092\u672c\u8cea\u7684\u306b\u305d\u308c\u307b\u3069\u5909\u66f4\u3057\u306a\u3044\u7d30\u304b\u306a\u30c6\u30af\u30cb\u30c3\u30af\u3060\u3051\u3067\u6a5f\u68b0\u8a9e\u306e3~4\u500d\u7a0b\u5ea6\u307e\u3067\u524a\u6e1b\u3055\u305b\u3089\u308c\u305f\u3002\u6b21\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u306f\u30c7\u30fc\u30bf\u69cb\u9020\u305d\u306e\u3082\u306e\u3092\u5909\u3048\u308b\u3053\u3068\u3067\u3082\u3063\u3068\u5927\u304d\u304f\u524a\u6e1b\u3057\u3066\u3044\u304f\u4e88\u5b9a\u3060\u304c\u3001\u6bd4\u8f03\u7684\u77ed\u3044\u671f\u9593\u3067\u3069\u306e\u3088\u3046\u306b\u30e1\u30e2\u30ea\u524a\u6e1b\u3092\u5b9f\u73fe\u3057\u3066\u3044\u3063\u305f\u304b\u306b\u3064\u3044\u3066\u7d39\u4ecb\u3057\u305f\u3044\u3002<\/p>\n<h1>\u8a08\u6e2c\u30c6\u30af\u30cb\u30c3\u30af<\/h1>\n<p>\u4f55\u304c\u3069\u306e\u3088\u3046\u306b\u6027\u80fd\u306b\u5f71\u97ff\u3057\u3066\u3044\u308b\u304b\u30d7\u30ed\u30d5\u30a1\u30a4\u30ea\u30f3\u30b0\u3092\u3057\u305f\u308a\u3001\u5b9f\u969b\u306b\u65bd\u7b56\u3092\u6253\u3063\u305f\u5f8c\u306b\u3069\u308c\u304f\u3089\u3044\u30a4\u30f3\u30d1\u30af\u30c8\u304c\u3042\u3063\u305f\u304b\u8a08\u6e2c\u3059\u308b\u3053\u3068\u306f\u3001\u52b9\u7387\u3088\u304f\u78ba\u5b9f\u306b\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30c1\u30e5\u30fc\u30cb\u30f3\u30b0\u3092\u3057\u3066\u3044\u304f\u4e0a\u3067\u975e\u5e38\u306b\u91cd\u8981\u3067\u3042\u308b\u3002\u3053\u306e\u8fba\u3082\u79c1\u304c\u5b9f\u9a13\u3084\u6574\u5099\u3092\u884c\u306a\u3063\u305f\u306e\u3067\u3001\u5148\u306b\u7d39\u4ecb\u3057\u3066\u304a\u304f\u3002<\/p>\n<h2>\u30d2\u30fc\u30d7\u30d7\u30ed\u30d5\u30a1\u30a4\u30e9<\/h2>\n<p>The Rust Performance Book \u306e Profiling \u306e\u7ae0 \u3092\u898b\u308b\u3068\u3001\u7d50\u69cb\u8272\u3005\u306a\u30d7\u30ed\u30d5\u30a1\u30a4\u30e9\u304c\u7d39\u4ecb\u3055\u308c\u3066\u3044\u308b\u3002\u3053\u306e\u4e2d\u3067 valgrind (cachegrind &amp; callgrind)\u3001DHAT\u3001dhat-rs\u3001heaptrack\u3001bytehound \u3042\u305f\u308a\u3092\u8a66\u3057\u305f\u306e\u3060\u304c\u3001\u6211\u3005\u304cYJIT\u306eRust\u306e\u30b3\u30fc\u30c9\u3092C\u3067\u66f8\u304b\u308c\u3066\u3044\u308bRuby\u30a4\u30f3\u30bf\u30d7\u30ea\u30bf\u3068\u540c\u5c45\u3055\u305b\u3066\u4f7f\u3063\u3066\u3044\u308b\u95a2\u4fc2\u3067C\u306e\u4e16\u754c\u306e\u3082\u306e\u304c\u6df7\u3056\u3063\u3066\u3057\u307e\u3044\u7d50\u679c\u304c\u898b\u3065\u3089\u304b\u3063\u305f\u308a\u3001\u305d\u3082\u305d\u3082\u30af\u30e9\u30c3\u30b7\u30e5\u3057\u3066\u5168\u7136\u4f7f\u3048\u306a\u3044\u3082\u306e\u304c\u591a\u304b\u3063\u305f\u3002<\/p>\n<p>C\u306e\u3068\u3053\u308d\u306f\u7121\u8996\u3057\u3066Rust\u306e\u90e8\u5206\u3060\u3051\u30d2\u30fc\u30d7\u30d7\u30ed\u30d5\u30a1\u30a4\u30ea\u30f3\u30b0\u3092\u3057\u305f\u3044\u3068\u3044\u3046\u76ee\u7684\u3067\u306fdhat-rs\u304c\u4e00\u756a\u4f7f\u3044\u3084\u3059\u304b\u3063\u305f\u3002\u3053\u308c\u306fmaster\u306b\u306f\u30b3\u30df\u30c3\u30c8\u3057\u3066\u306a\u3044\u304c\u3001\u3053\u3093\u306a\u611f\u3058\u3067\u5272\u3068\u7c21\u5358\u306b\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3067\u304d\u308b\u3002<\/p>\n<p>\u5b9f\u884c\u3059\u308b\u3068 dhat-heap.json \u3068\u3044\u3046\u30d5\u30a1\u30a4\u30eb\u304c\u751f\u6210\u3055\u308c\u3001\u3053\u308c\u3092DHAT Viewer\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u3068\u30d2\u30fc\u30d7\u306e\u30e1\u30e2\u30ea\u6d88\u8cbb\u306e\u30d6\u30ec\u30fc\u30af\u30c0\u30a6\u30f3\u3092Web UI\u3067\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d5d4337434c4406cf1030\/16-0.png\" alt=\"Screenshot 2022-12-22 at 01.02.43.png\" \/><\/div>\n<p>\u6700\u521d\u306f\u3053\u308c\u3092\u3044\u3044\u611f\u3058\u306b\u898b\u308b\u65b9\u6cd5\u3082\u3088\u304f\u308f\u304b\u3063\u3066\u306a\u304b\u3063\u305f\u306e\u3060\u304c\u3001\u30d9\u30f3\u30c1\u30de\u30fc\u30af\u6642\u306e\u6700\u5f8c\u307e\u3067\u4f7f\u308f\u308c\u7d9a\u3051\u305f\u30e1\u30e2\u30ea\u306e\u6d88\u8cbb\u3092\u6291\u3048\u305f\u3044\u3068\u3044\u3046\u79c1\u306e\u7528\u9014\u3060\u3068 Sort metric \u3092 At t-end (bytes) \u306b\u3059\u308b\u3068\u5927\u5206\u8aad\u307f\u3084\u3059\u304f\u306a\u3063\u305f\u3002<\/p>\n<p>\u3053\u306eSort metric\u3092\u5909\u3048\u308b\u30c6\u30af\u3092\u77e5\u3089\u306a\u304b\u3063\u305f\u6642\u306f\u3084\u305f\u3089\u60c5\u5831\u304c\u6b20\u843d\u3057\u3066\u3044\u308b\u3068\u601d\u3063\u3066tatsuya6502\u3055\u3093\u306brust-lang-jp\u3067\u76f8\u8ac7\u3057\u3066\u3044\u305f\u306e\u3060\u304c\u3001\u5b9f\u969b\u3001\u3042\u308b\u95be\u5024\u3092\u4e0b\u56de\u308b\u3082\u306e\u306f\u843d\u3068\u3055\u308c\u3066\u306f\u3044\u308b\u306e\u3067\u3001\u305d\u308c\u3092\u76f4\u3059\u30d1\u30c3\u30c1\u3082\u66f8\u3044\u3066\u3044\u305f\u3060\u3044\u305f\u306e\u3067\u3001\u3082\u3057\u305d\u308c\u304c\u5fc5\u8981\u306b\u306a\u3063\u305f\u65b9\u306f\u305d\u3061\u3089\u3082\u3069\u3046\u305e\u3002<\/p>\n<h2>Rust\u306e\u30b0\u30ed\u30fc\u30d0\u30eb\u30a2\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30b5\u30a4\u30ba\u8a08\u6e2c<\/h2>\n<p>\u30e1\u30e2\u30ea\u6539\u5584\u3092\u59cb\u3081\u308b\u524d\u306e\u6642\u70b9\u3067\u306fRust\u304c\u4f7f\u7528\u3059\u308b\u30e1\u30e2\u30ea\u306e\u91cf\u3092\u8a08\u6e2c\u3067\u304d\u3066\u304a\u3089\u305a\u3001JIT\u304c\u751f\u6210\u3059\u308b\u30b3\u30fc\u30c9\u30b5\u30a4\u30ba\u304f\u3089\u3044\u3057\u304b\u81ea\u524d\u3067\u8a08\u6e2c\u3067\u304d\u3066\u3044\u306a\u304b\u3063\u305f\u305f\u3081\u3001\u4f55\u6545\u751f\u6210\u30b3\u30fc\u30c9\u30b5\u30a4\u30ba\u3088\u308a\u3082\u591a\u304f\u30e1\u30e2\u30ea\u6d88\u8cbb\u91cf\u304c\u5897\u3048\u3066\u3044\u308b\u306e\u304b\u3088\u304f\u308f\u304b\u3063\u3066\u3044\u306a\u3044\u72b6\u614b\u3060\u3063\u305f\u3002Rust\u3060\u308d\u3046\u306a\u3001\u3068\u3044\u3046\u7591\u3044\u306f\u6301\u3063\u3066\u3044\u305f\u304c\u3001\u3053\u308c\u306fRust\u306e\u30b0\u30ed\u30fc\u30d0\u30eb\u30a2\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30b5\u30a4\u30ba\u3092\u8a08\u6e2c\u3059\u308b\u3053\u3068\u3067\u78ba\u4fe1\u3092\u6301\u3064\u3053\u3068\u304c\u3067\u304d\u305f\u3002<\/p>\n<p>\u305d\u308c\u3092\u5165\u308c\u305fPull Request\u304c\u3053\u308c\u3067\u3001\u3053\u308c\u306fmaster\u306b\u30de\u30fc\u30b8\u3055\u308c\u3066\u3044\u308b\u3002Ruby\u3092configure\u6642\u306b &#8211;enable-yjit=stats \u3084 &#8211;enable-yjit=dev \u3092\u6307\u5b9a\u3057\u3066\u30d3\u30eb\u30c9\u3059\u308b\u3068\u4f7f\u3048\u308b\u3088\u3046\u306b\u306a\u3063\u3066\u304a\u308a\u3001\u305d\u306e\u5834\u5408\u306fstats_alloc crate (\u4f7f\u3044\u65b9\u306f GitHub \u3092\u53c2\u7167) \u3092\u4f7f\u3063\u3066\u30a2\u30ed\u30b1\u30fc\u30bf\u306b\u8a08\u6e2c\u7528\u306e\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u3092\u5dee\u3057\u8fbc\u3080\u5f62\u3067\u52d5\u3044\u3066\u3044\u308b\u3002\u305d\u306e\u3088\u3046\u306bRuby\u3092\u30d3\u30eb\u30c9\u3057 &#8211;yjit-stats \u3092\u4f7f\u3046\u3068\u3001yjit_alloc_size \u3068\u3044\u3046\u30e1\u30c8\u30ea\u30c3\u30af\u3067Rust\u304c\u6d88\u8cbb\u3059\u308b\u30e1\u30e2\u30ea\u91cf\u3092\u898b\u3089\u308c\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3002<\/p>\n<pre class=\"post-pre\"><code>inline_code_size:         4855668\r\noutlined_code_size:       4852936\r\nfreed_code_size:                0\r\nyjit_alloc_size:         25114317\r\n<\/code><\/pre>\n<p>\u4ee5\u5f8c\u306e\u7701\u30e1\u30e2\u30ea\u30c6\u30af\u30cb\u30c3\u30af\u306e\u9069\u7528\u306b\u304a\u3044\u3066\u306f\u3001\u524d\u5f8c\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3053\u306e yjit_alloc_size \u3092\u6bd4\u8f03\u3059\u308b\u3053\u3068\u3067\u52b9\u679c\u691c\u8a3c\u3092\u884c\u306a\u3063\u305f\u3002<\/p>\n<h1>\u7701\u30e1\u30e2\u30ea\u5316\u306e\u305f\u3081\u306b\u3084\u3063\u305f\u3053\u3068<\/h1>\n<p>\u624b\u5143\u3067\u9ad8\u901f\u306b\u6539\u5584\u30b5\u30a4\u30af\u30eb\u3092\u56de\u3059\u4e0a\u3067\u3001\u672c\u756a\u306b\u30c7\u30d7\u30ed\u30a4\u3057\u3066\u691c\u8a3c\u3059\u308b\u3088\u308a\u306f\u672c\u756a\u306b\u8fd1\u3044\u69cb\u9020\u306e\u30d9\u30f3\u30c1\u30de\u30fc\u30af\u3092\u4f7f\u3046\u65b9\u304c\u4fbf\u5229\u3067\u3042\u3063\u305f\u305f\u3081\u3001\u4ee5\u5f8c\u3001Rails\u306e\u30d9\u30f3\u30c1\u30de\u30fc\u30af\u3067\u3042\u308brailsbench\u3092\u4f7f\u3063\u3066\u52b9\u679c\u691c\u8a3c\u3092\u3057\u3066\u3044\u308b\u3002<\/p>\n<p>\u6539\u5584\u3092\u59cb\u3081\u308b\u524d\u306e\u6642\u70b9\u3067\u306f &#8211;enable-yjit=stats \u30d3\u30eb\u30c9\u3067 yjit_alloc_size \u304c\u4e0a\u8a18\u306e\u901a\u308a25.1MB\u3060\u3063\u305f\u3002<\/p>\n<p>\u53c2\u8003: Heap Allocations &#8211; The Rust Performance Book<\/p>\n<h2>#[allow(unused)] \u3067\u653e\u7f6e\u3057\u3066\u3044\u305f\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u524a\u9664<\/h2>\n<p>Pull Request: YJIT: Remove unused src_ctx from Block<\/p>\n<p>\u30c6\u30af\u30cb\u30c3\u30af\u3068\u3044\u3046\u306b\u306f\u3042\u307e\u308a\u306b\u3082\u3057\u3087\u3046\u3082\u306a\u3055\u3059\u304e\u308b\u8a71\u3060\u304c\u3001\u904e\u53bb\u306e\u30ea\u30d5\u30a1\u30af\u30bf\u30ea\u30f3\u30b0\u306e\u904e\u7a0b\u3067\u5c06\u6765\u7684\u306b\u4f7f\u3046\u4e88\u5b9a\u3067\u6b8b\u3055\u308c\u305f\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u305d\u306e\u307e\u307e\u4f7f\u308f\u308c\u305a\u306b\u6642\u304c\u7d4c\u3063\u3066\u3057\u307e\u3063\u3066\u3044\u3066\u3001\u305d\u308c\u3092\u524a\u9664\u3057\u305f\u3001\u3068\u3044\u3046\u306e\u304c\u6700\u521d\u306e\u4e00\u6b69\u3060\u3063\u305f\u3002<\/p>\n<p>\u3053\u308c\u3067 25.1MB \u2192 23.3MB \u307e\u3067\u524a\u6e1b\u3002<\/p>\n<h2>2\u901a\u308a\u306e\u65b9\u6cd5\u3067\u4fdd\u5b58\u3057\u3066\u3044\u305f\u91cd\u8907\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u524a\u9664<\/h2>\n<p>Pull Request: YJIT: Invalidate redefined methods only through cme<\/p>\n<p>\u3053\u308c\u3082\u306a\u3093\u3068\u3044\u3046\u304bRust\u30c6\u30af\u30cb\u30c3\u30af\u3068\u3044\u3046\u3088\u308a\u306fYJIT\u7279\u6709\u306e\u8a71\u306a\u306e\u3060\u304c\u3001\u30e1\u30bd\u30c3\u30c9\u304c\u518d\u5b9a\u7fa9\u3055\u308c\u305f\u6642\u306bJIT\u30b3\u30fc\u30c9\u3092invalidate\u3059\u308b\u305f\u3081\u306e\u65b9\u6cd5\u30922\u901a\u308a\u7528\u610f\u3057\u3066\u3044\u3066\u3001\u3053\u308c\u306fRuby\u30a4\u30f3\u30bf\u30d7\u30ea\u30bf\u5074\u306e\u5b9f\u88c5\u3092\u3044\u3058\u3089\u305a\u306b\u5b9f\u88c5\u3059\u308b\u90fd\u5408\u4e0a\u305d\u3046\u306a\u3063\u3066\u3044\u305f\u306e\u3060\u304c\u3001\u5358\u306b\u30a4\u30f3\u30bf\u30d7\u30ea\u30bf\u5074\u306e\u5b9f\u88c5\u3092\u7c21\u7565\u5316\u3057\u3066\u3044\u304f\u3053\u3068\u3067YJIT\u5074\u3082invalidation\u7528\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u91cd\u8907\u524a\u9664\u304c\u3067\u304d\u305f\u3002<\/p>\n<p>\u3053\u308c\u3067 22.3MB \u2192 22.2MB \u307e\u3067\u524a\u6e1b\u3002<\/p>\n<h2>Vec \u3092 shrink_to_fit \u3067\u7e2e\u3081\u308b<\/h2>\n<p>Pull Request: YJIT: Shrink the vectors of Block after mutation<\/p>\n<p>\u3084\u3063\u3068\u7d14\u7c8b\u306aRust\u306e\u30c6\u30af\u30cb\u30c3\u30af\u307d\u3044\u8a71\u3002Vec\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u8aad\u3080\u3068\u3001\u3053\u3046\u66f8\u3044\u3066\u3042\u308b:<\/p>\n<blockquote><p>Vec will never automatically shrink itself, even if completely empty. This ensures no unnecessary allocations or deallocations occur. Emptying a Vec and then filling it back up to the same len should incur no calls to the allocator. If you wish to free up unused memory, use shrink_to_fit or shrink_to.<\/p><\/blockquote>\n<p>Vec\u304c\u4f38\u7e2e\u3059\u308b\u5ea6\u306b\u5fc5\u305a\u30ea\u30a2\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u3057\u3066\u308b\u3068\u5f53\u7136\u9045\u304f\u306a\u308b\u306e\u3067\u3001\u901f\u5ea6\u306e\u305f\u3081\u306bRust\u306f\u30ea\u30a2\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5c11\u3057\u30b5\u30dc\u3063\u3066\u3044\u308b\u3068\u3044\u3046\u3088\u3046\u306a\u8a71\u304c\u66f8\u3044\u3066\u3042\u308b\u3002<\/p>\n<p>\u5f93\u3063\u3066\u3001\u672c\u6765\u5fc5\u8981\u306a\u9818\u57df\u3088\u308a\u3082\u5c11\u3057\u591a\u304fVec\u304c\u30e1\u30e2\u30ea\u3092\u4f7f\u3046\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001YJIT\u304c\u4f7f\u3046Vec\u304c\u5909\u66f4\u3055\u308c\u305f\u5f8c\u306bshrink_to_fit\u3092\u547c\u3093\u3067\u660e\u793a\u7684\u306b\u30ea\u30a2\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u767a\u751f\u3055\u305b\u308b\u3053\u3068\u3067\u3053\u308c\u3092\u6539\u5584\u3057\u305f\u3002YJIT\u306e\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u3067\u306f\u3001\u4e00\u5ea6\u3042\u308b\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u3057\u307e\u3048\u3070\u3042\u3068\u306f\u305d\u3053\u3067\u751f\u6210\u3055\u308c\u305f\u30b3\u30fc\u30c9\u304c\u3072\u305f\u3059\u3089\u4f7f\u308f\u308c\u308b\u3060\u3051\u306a\u306e\u3067\u3001\u30b3\u30f3\u30d1\u30a4\u30eb\u304cshrink_to_fit\u3067\u591a\u5c11\u9045\u304f\u306a\u3063\u3066\u3082\u7121\u8996\u3067\u304d\u308b\u6027\u80fd\u7279\u6027\u3067\u3042\u308b\u3053\u3068\u304c\u80cc\u666f\u306b\u3042\u308b\u3002<\/p>\n<p>\u3053\u308c\u3067 22.2MB \u2192 20.9MB \u307e\u3067\u524a\u6e1b\u3002<\/p>\n<h2>#[repr(packed)] \u3067\u69cb\u9020\u4f53\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a70\u3081\u308b<\/h2>\n<p>Pull Request: YJIT: Pack BlockId and CodePtr<\/p>\n<p>\u4e00\u822c\u306b\u3001C\u3084Rust\u3067\u69cb\u9020\u4f53\u3092\u66f8\u3044\u305f\u6642\u3001\u305d\u308c\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u305f\u30d0\u30a4\u30ca\u30ea\u3067\u306f\u5fc5\u305a\u3057\u3082\u5404\u30d5\u30a3\u30fc\u30eb\u30c9\u306b\u5fc5\u8981\u306a\u6700\u4f4e\u9650\u306e\u30b5\u30a4\u30ba\u3067\u4e26\u3093\u3067\u6577\u304d\u8a70\u3081\u3089\u308c\u3066\u3044\u308b\u308f\u3051\u3067\u306f\u306a\u304f\u3001\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306b\u5fdc\u3058\u3066\u9069\u5f53\u306b\u4f55\u3082\u306a\u3044\u7a7a\u9593(\u30d1\u30c7\u30a3\u30f3\u30b0)\u3092\u9593\u306b\u631f\u3093\u3067\u30a2\u30e9\u30a4\u30f3\u30e1\u30f3\u30c8\u3092\u53d6\u308b\u3053\u3068\u3067\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u30a2\u30af\u30bb\u30b9\u304c\u901f\u304f\u306a\u308b\u3088\u3046\u306b\u30b3\u30f3\u30d1\u30a4\u30e9\u304c\u6700\u9069\u5316\u3092\u3057\u305f\u308a\u3059\u308b\u3002<\/p>\n<p>YJIT\u306e\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u3067\u306f\u3001\u751f\u6210\u30b3\u30fc\u30c9\u306e\u6027\u80fd\u306b\u6bd4\u3079\u308b\u3068\u30b3\u30f3\u30d1\u30a4\u30eb\u306b\u304b\u304b\u308b (#[repr(packed)] \u3092\u3064\u3051\u308b\u3053\u3068\u3067\u767a\u751f\u3059\u308b\u7a0b\u5ea6\u306e) \u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u306f\u91cd\u8981\u5ea6\u304c\u4f4e\u3044\u305f\u3081\u3001\u305d\u3053\u3067\u30a2\u30e9\u30a4\u30f3\u30e1\u30f3\u30c8\u3092\u53d6\u3063\u3066\u901f\u304f\u3059\u308b\u3088\u308a\u306f\u3001\u591a\u5c11\u30b3\u30f3\u30d1\u30a4\u30eb\u901f\u5ea6\u3092\u72a0\u7272\u306b\u3057\u3066\u30ac\u30c1\u30ac\u30c1\u306b\u6577\u304d\u8a70\u3081\u3066\u3067\u3082\u30e1\u30e2\u30ea\u6d88\u8cbb\u91cf\u3092\u6291\u3048\u305f\u3044\u3068\u3044\u3046\u72b6\u614b\u3060\u3063\u305f\u3002\u305d\u306e\u305f\u3081\u3001struct\u306b #[repr(packed)] \u3092\u3064\u3051\u3066\u3044\u304f\u3053\u3068\u3067\u3053\u308c\u3092\u5b9f\u73fe\u3057\u305f\u3002<\/p>\n<p>\u3053\u308c\u3092\u3084\u308b\u3068\u4f7f\u3048\u306a\u304f\u306a\u308b\u6a5f\u80fd\u3082\u3042\u308b\u306e\u3067\u3001\u5fc5\u305a\u3057\u3082\u4f7f\u3048\u308b\u308f\u3051\u3058\u3083\u306a\u3044\u304c\u3001struct CodePtr(*const u8) \u307f\u305f\u3044\u306a\u30d5\u30a3\u30fc\u30eb\u30c91\u3064\u3060\u3051\u306estruct\u3067\u3082\u4f55\u6545\u304b\u52b9\u679c\u304c\u3042\u3063\u305f\u308a\u3068\u3001\u4f7f\u3048\u308b\u6642\u306f\u4f7f\u3063\u3066\u304a\u304f\u3068\u4fbf\u5229\u3002<\/p>\n<p>\u3053\u308c\u3067 20.9MB \u2192 18.2MB \u307e\u3067\u524a\u6e1b\u3002<\/p>\n<h2>Vec \u3092 shrink_to_fit \u3067\u7e2e\u3081\u308b (2)<\/h2>\n<p>Pull Request: YJIT: Shrink version lists after mutation<\/p>\n<p>\u6bb5\u3005\u624b\u8a70\u308a\u306b\u306a\u3063\u3066\u304d\u3066\u3001\u672c\u5f53\u306b\u3053\u3053\u5165\u308c\u3066\u3048\u3048\u3093\u304b\u307f\u305f\u3044\u306a\u5fae\u5999\u306a\u5834\u6240\u306bshrink_to_fit\u3092\u3044\u308c\u3066\u3001\u3084\u3084\u9870\u8e59\u3092\u8cb7\u3046\u3002\u6b63\u76f4\u4eca\u56de\u306f\u305d\u308c\u307b\u3069\u30a4\u30f3\u30d1\u30af\u30c8\u3082\u306a\u304b\u3063\u305f\u3057\u3001\u307b\u3069\u307b\u3069\u306b\u3057\u305f\u65b9\u304c\u826f\u3055\u305d\u3046\u3002<\/p>\n<p>\u3053\u308c\u3067 18.2MB \u2192 17.8MB \u307e\u3067\u524a\u6e1b\u3002<\/p>\n<h2>\u30dd\u30a4\u30f3\u30bf\u306eOption\u306bNonNull\u3092\u4f7f\u3046<\/h2>\n<p>Pull Request: YJIT: Use NonNull pointer for CodePtr<\/p>\n<p>\u3053\u308c\u306frust-lang-jp\u3067monochrome\u3055\u3093\u304b\u3089\u6559\u308f\u3063\u305f\u8a71\u306a\u306e\u3060\u304c\u3001\u30dd\u30a4\u30f3\u30bf\u306eOption\u306f\u30dd\u30a4\u30f3\u30bf\u306e\u304b\u308f\u308a\u306bNonNull\u3092\u4f7f\u3046\u3053\u3068\u3067\u30e1\u30e2\u30ea\u6d88\u8cbb\u3092\u6291\u3048\u3089\u308c\u308b\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u308b:<\/p>\n<blockquote><p>https:\/\/doc.rust-lang.org\/stable\/std\/ptr\/struct.NonNull.html<br \/>\nUnlike *mut T, the pointer must always be non-null, even if the pointer is never dereferenced. This is so that enums may use this forbidden value as a discriminant \u2013 Option has the same size as *mut T.<\/p><\/blockquote>\n<p>\u307e\u3042\u8981\u3059\u308b\u306b\u3001\u30dd\u30a4\u30f3\u30bf\u306e\u5024\u304c0\u3067\u306f\u306a\u3044\u3053\u3068\u304c\u5206\u304b\u3063\u3066\u3044\u308c\u3070Some\u306e\u4e2d\u8eab\u304c0\u306a\u30b1\u30fc\u30b9\u3092\u8003\u616e\u3059\u308b\u5fc5\u8981\u304c\u306a\u304f\u306a\u308b\u306e\u3067\u30010\u306e\u5024\u3092None\u3068\u3057\u3066\u4f7f\u3046\u3053\u3068\u3067\u3001\u30dd\u30a4\u30f3\u30bf\u306eOption\u3092\u30dd\u30a4\u30f3\u30bf1\u3064\u5206\u306e\u5e45\u3067\u8868\u73fe\u53ef\u80fd\u306b\u306a\u308b\u3068\u3044\u3046\u6700\u9069\u5316\u3060\u3068\u601d\u308f\u308c\u308b\u3002<\/p>\n<p>CodePtr\u3068\u3044\u3046\u306e\u304c\u305d\u306e\u540d\u306e\u901a\u308a\u30dd\u30a4\u30f3\u30bf\u30921\u3064\u6301\u3064\u3060\u3051\u306estruct\u306a\u306e\u3060\u304c\u3001Option\u304c\u4ed6\u306estruct\u304b\u3089\u3088\u304f\u4f7f\u308f\u308c\u3066\u3044\u3066\u3001\u305d\u306e\u305f\u3081CodePtr\u304c\u4f7f\u3046\u30dd\u30a4\u30f3\u30bf\u3092*const u8\u304b\u3089NonNull\u306b\u5909\u3048\u305f\u3053\u3068\u3067\u30e1\u30e2\u30ea\u6d88\u8cbb\u91cf\u304c\u6e1b\u3089\u305b\u305f\u3002<\/p>\n<p>\u3053\u308c\u3067 17.8MB \u2192 17.2MB \u307e\u3067\u524a\u6e1b\u3002<\/p>\n<h2>\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306e\u4fee\u6b63<\/h2>\n<p>Pull Request: Plug YJIT memory leaks<\/p>\n<p>\u3053\u3053\u3067\u7d39\u4ecb\u3057\u3066\u3044\u308bPull Request\u3060\u3051\u306f\u79c1\u3067\u306f\u306a\u304f\u540c\u50da\u306eAlan\u304c\u3084\u3063\u305f\u3082\u306e\u306a\u306e\u3060\u304c\u3001YJIT\u306bRuby 3.2\u3067\u5c0e\u5165\u3057\u305fCode GC\u306e(\u751f\u6210\u30b3\u30fc\u30c9\u3067\u306f\u306a\u304f\u3001Rust\u306e)\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u3092\u4fee\u6b63\u3057\u305f\u3068\u3044\u3046\u3082\u306e\u3067\u3001\u3053\u308c\u306f\u4f7f\u308f\u306a\u304f\u306a\u3063\u305f\u6642\u306bfree\u3057\u3066\u3044\u305f\u3064\u3082\u308a\u306e\u30d6\u30ed\u30c3\u30af\u304c\u5faa\u74b0\u53c2\u7167\u306a\u3069\u306e\u7406\u7531\u3067\u958b\u653e\u3055\u308c\u3066\u3044\u306a\u304b\u3063\u305f\u7b49\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3057\u3066\u3044\u308b\u3002\u3053\u306e\u5909\u66f4\u306e\u904e\u7a0b\u3067\u3001Code GC\u304c\u4f7f\u308f\u308c\u306a\u3044\u30b1\u30fc\u30b9\u3067\u3082\u3088\u308a\u591a\u304f\u306e\u30d6\u30ed\u30c3\u30af\u304c\u958b\u653e\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u3001\u30e1\u30e2\u30ea\u6d88\u8cbb\u304c\u6e1b\u3063\u305f\u3002<\/p>\n<p>KOBA789\u3055\u3093\u304c\u3061\u3087\u3063\u3068\u524d\u306b\u66f8\u3044\u3066\u3044\u305f\u8a71\u3060\u304c\u3001Rust\u3092\u66f8\u3044\u3066\u3044\u308b\u304b\u3089\u3068\u3044\u3063\u3066\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u304c\u306a\u3044\u3053\u3068\u304c\u81ea\u52d5\u7684\u306b\u4fdd\u8a3c\u3055\u308c\u308b\u308f\u3051\u3067\u306f\u306a\u3044\u3068\u3044\u3046\u554f\u984c\u304c\u3042\u308b\u3002\u30e1\u30e2\u30ea\u3092\u8907\u6570\u7b87\u6240\u304b\u3089\u5171\u6709\u3057\u306a\u3044\u3088\u3046\u306a\u30b3\u30fc\u30c9\u3092\u66f8\u3044\u3066\u3044\u308c\u3070\u8a71\u306f\u5225\u3060\u304c\u3001\u65e2\u5b58\u306eC\u306e\u30b3\u30fc\u30c9\u30d9\u30fc\u30b9\u3067\u30d2\u30fc\u30d7\u306b\u5272\u308a\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u95a2\u9023\u3059\u308b\u30e1\u30bf\u30c7\u30fc\u30bf\u3092Rust\u3067\u7ba1\u7406\u3059\u308b\u3001\u3068\u3044\u3063\u305f\u4f7f\u3044\u65b9\u3092\u3057\u3066\u3044\u308b\u3068\u3001\u5fc5\u7136\u7684\u306bRust\u5074\u3082\u30d2\u30fc\u30d7\u30a2\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u307f\u305f\u3044\u306a\u611f\u3058\u306b\u306a\u308b\u3057\u3001(Rust\u306a\u306e\u306b)\u5b9f\u8ceaGC\u307f\u305f\u3044\u306a\u3082\u306e\u3092\u81ea\u5206\u3067\u5b9f\u88c5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002\u306a\u306e\u3067\u3001\u305d\u3046\u3044\u3046\u72b6\u6cc1\u3067\u4f7f\u3046\u5834\u5408\u306b\u95a2\u3057\u3066\u306f\u3001Rust\u3092\u4f7f\u3063\u3066\u3044\u308b\u304b\u3089\u3068\u3044\u3063\u3066C++\u3084Zig\u306e\u3088\u3046\u306a\u8a00\u8a9e\u3067\u3084\u308b\u5834\u5408\u3088\u308a\u30e1\u30e2\u30ea\u7ba1\u7406\u304c\u697d\u306b\u306a\u3063\u3066\u3044\u308b\u308f\u3051\u3067\u306f\u306a\u3055\u305d\u3046\u3060\u306a\u3068\u6700\u8fd1\u611f\u3058\u3066\u3044\u308b\u3002<\/p>\n<p>\u540c\u50da\u306e\u74b0\u5883\/\u8a08\u6e2c\u306a\u306e\u3067\u30d9\u30fc\u30b9\u304c\u524d\u56de\u306e17.2MB\u3068\u306f\u305a\u308c\u3066\u3057\u307e\u3063\u3066\u3044\u308b\u304c\u300115.2MB \u2192 11.7MB \u306b\u306a\u308b\u304f\u3089\u3044\u306e\u30a4\u30f3\u30d1\u30af\u30c8\u304c\u3042\u3063\u305f\u6a21\u69d8\u3002<\/p>\n<h1>\u307e\u3068\u3081<\/h1>\n<p>railsbench\u4e0a\u3067YJIT\u306eRust\u306e\u30b3\u30fc\u30c9\u304c\u6d88\u8cbb\u3059\u308b\u30e1\u30e2\u30ea\u3092 25.1MB \u304b\u3089\u5c11\u306a\u304f\u3068\u3082 17.2MB\u307e\u3067\u3001\u66f4\u306b\u305d\u3053\u304b\u3089\u304a\u305d\u3089\u304f3~4MB\u304f\u3089\u3044\u306f\u524a\u6e1b\u3067\u304d\u305f\u3002\u672c\u756a\u74b0\u5883\u3067\u306f\u624b\u5143\u306erailsbench\u307b\u3069\u306e\u5272\u5408\u3067\u5dee\u306f\u51fa\u306a\u304b\u3063\u305f\u304c\u3001\u305d\u308c\u3067\u3082\u30e1\u30e2\u30ea\u6d88\u8cbb\u304c\u3061\u3083\u3093\u3068\u6e1b\u3063\u305f\u3053\u3068\u304c\u89b3\u6e2c\u3067\u304d\u305f\u3002<\/p>\n<p>\u30de\u30eb\u30c1\u30d7\u30ed\u30bb\u30b9\u30b5\u30fc\u30d0\u30fc\u304c\u4e3b\u6d41\u306aRuby\u306e\u904b\u7528\u306b\u304a\u3044\u3066\u306f\u30e1\u30e2\u30ea\u306e\u6d88\u8cbb\u91cf\u304c\u5272\u3068\u91cd\u8981\u306b\u306a\u308b\u306e\u3067\u3001\u4eca\u5f8c\u3082\u6539\u5584\u3092\u7d9a\u3051\u3066\u3044\u304d\u305f\u3044\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u3053\u308c\u306f Rust Advent Calendar 2022 \u306e\u30ab\u30ec\u30f3\u30c0\u30fc2\u306e22\u65e5\u76ee\u306e\u8a18\u4e8b\u3067\u3059\u3002 YJIT\u3068\u306f [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-45199","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>- Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/45199-2\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:description\" content=\"\u3053\u308c\u306f Rust Advent Calendar 2022 \u306e\u30ab\u30ec\u30f3\u30c0\u30fc2\u306e22\u65e5\u76ee\u306e\u8a18\u4e8b\u3067\u3059\u3002 YJIT\u3068\u306f [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/45199-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-01-26T18:38:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-29T09:25:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d5d4337434c4406cf1030\/16-0.png\" \/>\n<meta name=\"author\" content=\"\u6e05, \u5b87\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u6e05, \u5b87\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/45199-2\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/45199-2\/\",\"name\":\"- Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-01-26T18:38:27+00:00\",\"dateModified\":\"2024-04-29T09:25:32+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/1a6ecd3d914d22a5ac32791ffc1fbd8e\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/45199-2\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/1a6ecd3d914d22a5ac32791ffc1fbd8e\",\"name\":\"\u6e05, \u5b87\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g\",\"caption\":\"\u6e05, \u5b87\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/qingyu\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/45199-2\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"- Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/45199-2\/","og_locale":"zh_CN","og_type":"article","og_description":"\u3053\u308c\u306f Rust Advent Calendar 2022 \u306e\u30ab\u30ec\u30f3\u30c0\u30fc2\u306e22\u65e5\u76ee\u306e\u8a18\u4e8b\u3067\u3059\u3002 YJIT\u3068\u306f [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/45199-2\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-01-26T18:38:27+00:00","article_modified_time":"2024-04-29T09:25:32+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d5d4337434c4406cf1030\/16-0.png"}],"author":"\u6e05, \u5b87","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u6e05, \u5b87","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"2 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/45199-2\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/45199-2\/","name":"- Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-01-26T18:38:27+00:00","dateModified":"2024-04-29T09:25:32+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/1a6ecd3d914d22a5ac32791ffc1fbd8e"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/45199-2\/"]}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/1a6ecd3d914d22a5ac32791ffc1fbd8e","name":"\u6e05, \u5b87","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g","caption":"\u6e05, \u5b87"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/qingyu\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/45199-2\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/45199","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=45199"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/45199\/revisions"}],"predecessor-version":[{"id":86621,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/45199\/revisions\/86621"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=45199"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=45199"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=45199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}