[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"summary-6cd773fe2be8de1c-embed-servo-engine-in-rust-for-rendering-wasm-summary":3,"summaries-facets-categories":340,"summary-related-6cd773fe2be8de1c-embed-servo-engine-in-rust-for-rendering-wasm-summary":3909},{"id":4,"title":5,"ai":6,"body":13,"categories":299,"created_at":301,"date_modified":301,"description":293,"extension":302,"faq":301,"featured":303,"kicker_label":301,"meta":304,"navigation":323,"path":324,"published_at":301,"question":301,"scraped_at":325,"seo":326,"sitemap":327,"source_id":328,"source_name":329,"source_type":330,"source_url":331,"stem":332,"tags":333,"thumbnail_url":301,"tldr":337,"tweet":301,"unknown_tags":338,"__hash__":339},"summaries\u002Fsummaries\u002F6cd773fe2be8de1c-embed-servo-engine-in-rust-for-rendering-wasm-summary.md","Embed Servo Engine in Rust for Rendering & WASM",{"provider":7,"model":8,"input_tokens":9,"output_tokens":10,"processing_time_ms":11,"cost_usd":12},"openrouter","x-ai\u002Fgrok-4.1-fast",7047,1915,12763,0.00234425,{"type":14,"value":15,"toc":292},"minimark",[16,21,70,120,124,228,232],[17,18,20],"h2",{"id":19},"core-api-build-servo-engine-and-webviews-for-rendering","Core API: Build Servo Engine and WebViews for Rendering",[22,23,24,25,29,30,33,34,37,38,41,42,45,46,49,50,53,54,57,58,61,62,65,66,69],"p",{},"Start with ",[26,27,28],"code",{},"ServoBuilder::default().opts(Opts).preferences(Preferences).event_loop_waker(EventLoopWaker).protocol_registry(ProtocolRegistry).build()"," to create a ",[26,31,32],{},"Servo"," handle. Pair it with ",[26,35,36],{},"RenderingContext"," implementations: ",[26,39,40],{},"SoftwareRenderingContext::new(PhysicalSize\u003Cu32>)"," for headless GPU-free rendering (ideal for CI\u002Fservers), or ",[26,43,44],{},"WindowRenderingContext"," with raw-window-handle for apps. Then ",[26,47,48],{},"WebViewBuilder::new(&servo, Rc\u003Cdyn RenderingContext>).url(Url).hidpi_scale_factor(Scale).delegate(Rc\u003Cdyn WebViewDelegate>).build()"," yields a clonable ",[26,51,52],{},"WebView",". Drive via ",[26,55,56],{},"servo.spin_event_loop()"," in a loop; hook ",[26,59,60],{},"WebViewDelegate::notify_load_status_changed(LoadStatus::Complete)"," post-load event for screenshots using ",[26,63,64],{},"RenderingContext::read_to_image(Box2D\u003Ci32, DevicePixel>) -> Option\u003CImageBuffer\u003CRgba\u003Cu8>, Vec\u003Cu8>>>",". This mirrors servoshell API but streamlined for embedders, handling input events, network intercepts via ",[26,67,68],{},"WebResourceLoad",", and custom protocols.",[22,71,72,73,76,77,80,81,84,85,88,89,92,93,96,97,100,101,104,105,108,109,112,113,80,116,119],{},"Trade-offs: SoftwareRenderingContext avoids GPU\u002FX11 (",[26,74,75],{},"apt-get install libegl1"," may help errors) but slower; call ",[26,78,79],{},"present()"," with ",[26,82,83],{},"PreserveBuffer::No"," before ",[26,86,87],{},"read_to_image","; wait for ",[26,90,91],{},"notify_new_frame_ready"," after ",[26,94,95],{},"LoadStatus::Complete"," to settle ",[26,98,99],{},"requestAnimationFrame",". Use ",[26,102,103],{},"Rc\u003CCell\u003Cbool>>"," or ",[26,106,107],{},"Arc\u003CAtomicBool>"," for load flags; set ",[26,110,111],{},"Preferences::network_http_proxy_uri = \"\"","; handle ",[26,114,115],{},"surfman::error::Error",[26,117,118],{},"anyhow::Context",".",[17,121,123],{"id":122},"headless-screenshots-servo-shot-cli-in-150-lines","Headless Screenshots: servo-shot CLI in 150 Lines",[22,125,126,129,130,133,134,133,137,133,140,133,143,133,146,133,149,152,153,156,157,160,161,163,164,80,166,169,170,172,173,176,177,180,181,184,185,188,189,192,193,196,197,133,200,133,203,133,206,209,210,213,214,217,218,163,220,223,224,227],{},[26,127,128],{},"servo-shot \u003Curl|html> [--width 1280] [--height 800] [--dpr 1.0] [--out shot.png]"," renders to PNG using only ",[26,131,132],{},"servo = \"0.1.0\"",", ",[26,135,136],{},"clap",[26,138,139],{},"image",[26,141,142],{},"url",[26,144,145],{},"anyhow",[26,147,148],{},"dpi",[26,150,151],{},"euclid",". Flow: Init ",[26,154,155],{},"SoftwareRenderingContext"," from CLI sizes (",[26,158,159],{},"dpi::PhysicalSize\u003Cu32>","), build ",[26,162,32],{},"\u002F",[26,165,52],{},[26,167,168],{},"ShotDelegate"," waiting on ",[26,171,95],{},", loop ",[26,174,175],{},"spin_event_loop()"," until flag, ",[26,178,179],{},"ctx.read_to_image(full_rect)"," to ",[26,182,183],{},"image::save",". Produces ",[26,186,187],{},"sample.png"," from ",[26,190,191],{},"sample.html","; scales to 1920x1080@2x DPR. Build: ",[26,194,195],{},"cargo build --release"," after installing ",[26,198,199],{},"cmake",[26,201,202],{},"clang",[26,204,205],{},"llvm",[26,207,208],{},"pkg-config",". Avoids ",[26,211,212],{},"unsafe","; gotchas include no ",[26,215,216],{},"webview.paint()",", explicit ",[26,219,79],{},[26,221,222],{},"swap_buffers",", proxy unset, ",[26,225,226],{},"euclid::Size2D"," conversions.",[17,229,231],{"id":230},"wasm-servo-sub-crates-for-browser-not-full-engine","WASM: Servo Sub-Crates for Browser, Not Full Engine",[22,233,234,235,180,238,163,241,244,245,248,249,252,253,133,256,133,259,133,262,133,265,267,268,271,272,275,276,279,280,283,284,287,288,291],{},"Full ",[26,236,237],{},"servo",[26,239,240],{},"wasm32-unknown-unknown",[26,242,243],{},"wasm32-wasi"," fails due to ",[26,246,247],{},"mozjs_sys",", SharedArrayBuffer, ",[26,250,251],{},"fetch()",". Instead, compile subsystems: ",[26,254,255],{},"html5ever",[26,257,258],{},"markup5ever_rcdom",[26,260,261],{},"selectors",[26,263,264],{},"cssparser",[26,266,142],{},". Demo ",[26,269,270],{},"html5ever-wasm-demo",": ",[26,273,274],{},"cargo build --release --target wasm32-unknown-unknown","; ",[26,277,278],{},"wasm-bindgen --target web"," yields 454KB ",[26,281,282],{},"html5ever_wasm_demo_bg.wasm",", 8KB JS, 4KB HTML SPA. Parses textarea HTML into ",[26,285,286],{},"\u003Chtml>\u002F\u003Chead>\u002F\u003Cbody>\u002F\u003Ctbody>"," trees client-side. Serve via ",[26,289,290],{},"python3 -m http.server www 8000","; live at simonw.github.io\u002F...\u002Fwww\u002F. Enables !important CSS checkers, fetch-free parsers; stream full renderer via WebRTC if needed.",{"title":293,"searchDepth":294,"depth":294,"links":295},"",2,[296,297,298],{"id":19,"depth":294,"text":20},{"id":122,"depth":294,"text":123},{"id":230,"depth":294,"text":231},[300],"Software Engineering",null,"md",false,{"content_references":305,"triage":318},[306,311,315],{"type":307,"title":308,"url":309,"context":310},"other","Servo 0.1.0 Release","https:\u002F\u002Fservo.org\u002Fblog\u002F2026\u002F04\u002F13\u002Fservo-0.1.0-release\u002F","cited",{"type":312,"title":237,"url":313,"context":314},"tool","https:\u002F\u002Fdocs.rs\u002Fservo\u002F0.1.0","mentioned",{"type":307,"title":316,"url":317,"context":314},"servoshell","https:\u002F\u002Fgithub.com\u002Fservo\u002Fservo",{"relevance":319,"novelty":319,"quality":320,"actionability":320,"composite":321,"reasoning":322},3,4,3.45,"Category: Software Engineering. The article provides a practical guide on embedding the Servo engine in Rust for rendering, which is relevant for developers looking to integrate rendering capabilities into their applications. It includes specific code examples and workflows, making it actionable for the audience.",true,"\u002Fsummaries\u002F6cd773fe2be8de1c-embed-servo-engine-in-rust-for-rendering-wasm-summary","2026-04-15 15:35:09",{"title":5,"description":293},{"loc":324},"6cd773fe2be8de1c","__oneoff__","article","https:\u002F\u002Fgithub.com\u002Fsimonw\u002Fresearch\u002Ftree\u002Fmain\u002Fservo-crate-exploration#readme","summaries\u002F6cd773fe2be8de1c-embed-servo-engine-in-rust-for-rendering-wasm-summary",[334,335,336],"open-source","coding","wasm","Servo v0.1.0 crate exposes browser engine as embeddable Rust lib; use SoftwareRenderingContext for headless screenshots (servo-shot CLI: 150 lines renders URL to PNG); sub-crates like html5ever compile to 454KB WASM for browser SPAs.",[336],"7ZFZAPE1BfEJ_1ZuFDtEBbLrlaQS4v7V8ugkXxgxuRA",[341,344,347,350,353,356,358,360,362,364,366,368,371,373,375,377,379,381,383,385,387,389,392,395,397,399,401,403,405,408,410,412,414,416,418,420,422,424,426,428,430,432,434,436,438,440,442,444,446,448,450,452,454,456,458,460,462,464,466,468,470,472,474,476,478,480,482,484,486,488,490,492,494,496,498,500,502,504,506,508,510,512,514,516,518,520,522,524,526,528,530,532,534,536,538,540,542,544,546,548,550,552,554,556,558,560,562,564,566,568,570,572,574,576,578,580,582,584,586,588,590,592,594,596,598,600,602,604,606,608,610,612,614,616,618,620,622,624,626,628,630,632,634,636,638,640,642,644,646,648,650,652,654,656,658,660,663,665,667,669,671,673,675,677,679,681,683,685,687,689,691,693,695,697,699,701,703,705,707,709,711,713,715,717,719,721,723,725,727,729,731,733,735,737,739,741,743,745,747,749,751,753,755,757,759,761,763,765,767,769,771,773,775,777,779,781,783,785,787,789,791,793,795,797,799,801,803,805,807,809,811,813,815,817,819,821,823,825,827,829,831,833,835,837,839,841,843,845,847,849,851,853,855,857,859,861,863,865,867,869,871,873,875,877,879,881,883,885,887,889,891,893,895,897,899,901,903,905,907,909,911,913,915,917,919,921,923,925,927,929,931,933,935,937,939,941,943,945,947,949,951,953,955,957,959,961,963,965,967,969,971,973,975,977,979,981,983,985,987,989,991,993,995,997,999,1001,1003,1005,1007,1009,1011,1013,1015,1017,1019,1021,1023,1025,1027,1029,1031,1033,1035,1037,1039,1041,1043,1045,1047,1049,1051,1053,1055,1057,1059,1061,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1083,1085,1087,1089,1091,1093,1095,1097,1099,1101,1103,1105,1107,1109,1111,1113,1115,1117,1119,1121,1123,1125,1127,1129,1131,1133,1135,1137,1139,1141,1143,1145,1147,1149,1151,1153,1155,1157,1159,1161,1163,1165,1167,1169,1171,1173,1175,1177,1179,1181,1183,1185,1187,1189,1191,1193,1195,1197,1199,1201,1203,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379,1381,1383,1385,1387,1389,1391,1393,1395,1397,1399,1401,1403,1405,1407,1409,1411,1413,1415,1417,1419,1421,1423,1425,1427,1429,1431,1433,1435,1437,1439,1441,1443,1445,1447,1449,1451,1453,1455,1457,1459,1461,1463,1465,1467,1469,1471,1473,1475,1477,1479,1481,1483,1485,1487,1489,1491,1493,1495,1497,1499,1501,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533,1535,1537,1539,1541,1543,1545,1547,1549,1551,1553,1555,1557,1559,1561,1563,1565,1567,1569,1571,1573,1575,1577,1579,1581,1583,1585,1587,1589,1591,1593,1595,1597,1599,1601,1603,1605,1607,1609,1611,1613,1615,1617,1619,1621,1623,1625,1627,1629,1631,1633,1635,1637,1639,1641,1643,1645,1647,1649,1651,1653,1655,1657,1659,1661,1663,1665,1667,1669,1671,1673,1675,1677,1679,1681,1683,1685,1687,1689,1691,1693,1695,1697,1699,1701,1703,1705,1707,1709,1711,1713,1715,1717,1719,1721,1723,1725,1727,1729,1731,1733,1735,1737,1739,1741,1743,1745,1747,1749,1751,1753,1755,1757,1759,1761,1763,1765,1767,1769,1771,1773,1775,1777,1779,1781,1783,1785,1787,1789,1791,1793,1795,1797,1799,1801,1803,1805,1807,1809,1811,1813,1815,1817,1819,1821,1823,1825,1827,1829,1831,1833,1835,1837,1839,1841,1843,1845,1847,1849,1851,1853,1855,1857,1859,1861,1863,1865,1867,1869,1871,1873,1875,1877,1879,1881,1883,1885,1887,1889,1891,1893,1895,1897,1899,1901,1903,1905,1907,1909,1911,1913,1915,1917,1919,1921,1923,1925,1927,1929,1931,1933,1935,1937,1939,1941,1943,1945,1947,1949,1951,1953,1955,1957,1959,1961,1963,1965,1967,1969,1971,1973,1975,1977,1979,1981,1983,1985,1987,1989,1991,1993,1995,1997,1999,2001,2003,2005,2007,2009,2011,2013,2015,2017,2019,2021,2023,2025,2027,2029,2031,2033,2035,2037,2039,2041,2043,2045,2047,2049,2051,2053,2055,2057,2059,2061,2063,2065,2067,2069,2071,2073,2075,2077,2079,2081,2083,2085,2087,2089,2091,2093,2095,2097,2099,2101,2103,2105,2107,2109,2111,2113,2115,2117,2119,2121,2123,2125,2127,2129,2131,2133,2135,2137,2139,2141,2143,2145,2147,2149,2151,2153,2155,2157,2159,2161,2163,2165,2167,2169,2171,2173,2175,2177,2179,2181,2183,2185,2187,2189,2191,2193,2195,2197,2199,2201,2203,2205,2207,2209,2211,2213,2215,2217,2219,2221,2223,2225,2227,2229,2231,2233,2235,2237,2239,2241,2243,2245,2247,2249,2251,2253,2255,2257,2259,2261,2263,2265,2267,2269,2271,2273,2275,2277,2279,2281,2283,2285,2287,2289,2291,2293,2295,2297,2299,2301,2303,2305,2307,2309,2311,2313,2315,2317,2319,2321,2323,2325,2327,2329,2331,2333,2335,2337,2339,2341,2343,2345,2347,2349,2351,2353,2355,2357,2359,2361,2363,2365,2367,2369,2371,2373,2375,2377,2379,2381,2383,2385,2387,2389,2391,2393,2395,2397,2399,2401,2403,2405,2407,2409,2411,2413,2415,2417,2419,2421,2423,2425,2427,2429,2431,2433,2435,2437,2439,2441,2443,2445,2447,2449,2451,2453,2455,2457,2459,2461,2463,2465,2467,2469,2471,2473,2475,2477,2479,2481,2483,2485,2487,2489,2491,2493,2495,2497,2499,2501,2503,2505,2507,2509,2511,2513,2515,2517,2519,2521,2523,2525,2527,2529,2531,2533,2535,2537,2539,2541,2543,2545,2547,2549,2551,2553,2555,2557,2559,2561,2563,2565,2567,2569,2571,2573,2575,2577,2579,2581,2583,2585,2587,2589,2591,2593,2595,2597,2599,2601,2603,2605,2607,2609,2611,2613,2615,2617,2619,2621,2623,2625,2627,2629,2631,2633,2635,2637,2639,2641,2643,2645,2647,2649,2651,2653,2655,2657,2659,2661,2663,2665,2667,2669,2671,2673,2675,2677,2679,2681,2683,2685,2687,2689,2691,2693,2695,2697,2699,2701,2703,2705,2707,2709,2711,2713,2715,2717,2719,2721,2723,2725,2727,2729,2731,2733,2735,2737,2739,2741,2743,2745,2747,2749,2751,2753,2755,2757,2759,2761,2763,2765,2767,2769,2771,2773,2775,2777,2779,2781,2783,2785,2787,2789,2791,2793,2795,2797,2799,2801,2803,2805,2807,2809,2811,2813,2815,2817,2819,2821,2823,2825,2827,2829,2831,2833,2835,2837,2839,2841,2843,2845,2847,2849,2851,2853,2855,2857,2859,2861,2863,2865,2867,2869,2871,2873,2875,2877,2879,2881,2883,2885,2887,2889,2891,2893,2895,2897,2899,2901,2903,2905,2907,2909,2911,2913,2915,2917,2919,2921,2923,2925,2927,2929,2931,2933,2935,2937,2939,2941,2943,2945,2947,2949,2951,2953,2955,2957,2959,2961,2963,2965,2967,2969,2971,2973,2975,2977,2979,2981,2983,2985,2987,2989,2991,2993,2995,2997,2999,3001,3003,3005,3007,3009,3011,3013,3015,3017,3019,3021,3023,3025,3027,3029,3031,3033,3035,3037,3039,3041,3043,3045,3047,3049,3051,3053,3055,3057,3059,3061,3063,3065,3067,3069,3071,3073,3075,3077,3079,3081,3083,3085,3087,3089,3091,3093,3095,3097,3099,3101,3103,3105,3107,3109,3111,3113,3115,3117,3119,3121,3123,3125,3127,3129,3131,3133,3135,3137,3139,3141,3143,3145,3147,3149,3151,3153,3155,3157,3159,3161,3163,3165,3167,3169,3171,3173,3175,3177,3179,3181,3183,3185,3187,3189,3191,3193,3195,3197,3199,3201,3203,3205,3207,3209,3211,3213,3215,3217,3219,3221,3223,3225,3227,3229,3231,3233,3235,3237,3239,3241,3243,3245,3247,3249,3251,3253,3255,3257,3259,3261,3263,3265,3267,3269,3271,3273,3275,3277,3279,3281,3283,3285,3287,3289,3291,3293,3295,3297,3299,3301,3303,3305,3307,3309,3311,3313,3315,3317,3319,3321,3323,3325,3327,3329,3331,3333,3335,3337,3339,3341,3343,3345,3347,3349,3351,3353,3355,3357,3359,3361,3363,3365,3367,3369,3371,3373,3375,3377,3379,3381,3383,3385,3387,3389,3391,3393,3395,3397,3399,3401,3403,3405,3407,3409,3411,3413,3415,3417,3419,3421,3423,3425,3427,3429,3431,3433,3435,3437,3439,3441,3443,3445,3447,3449,3451,3453,3455,3457,3459,3461,3463,3465,3467,3469,3471,3473,3475,3477,3479,3481,3483,3485,3487,3489,3491,3493,3495,3497,3499,3501,3503,3505,3507,3509,3511,3513,3515,3517,3519,3521,3523,3525,3527,3529,3531,3533,3535,3537,3539,3541,3543,3545,3547,3549,3551,3553,3555,3557,3559,3561,3563,3565,3567,3569,3571,3573,3575,3577,3579,3581,3583,3585,3587,3589,3591,3593,3595,3597,3599,3601,3603,3605,3607,3609,3611,3613,3615,3617,3619,3621,3623,3625,3627,3629,3631,3633,3635,3637,3639,3641,3643,3645,3647,3649,3651,3653,3655,3657,3659,3661,3663,3665,3667,3669,3671,3673,3675,3677,3679,3681,3683,3685,3687,3689,3691,3693,3695,3697,3699,3701,3703,3705,3707,3709,3711,3713,3715,3717,3719,3721,3723,3725,3727,3729,3731,3733,3735,3737,3739,3741,3743,3745,3747,3749,3751,3753,3755,3757,3759,3761,3763,3765,3767,3769,3771,3773,3775,3777,3779,3781,3783,3785,3787,3789,3791,3793,3795,3797,3799,3801,3803,3805,3807,3809,3811,3813,3815,3817,3819,3821,3823,3825,3827,3829,3831,3833,3835,3837,3839,3841,3843,3845,3847,3849,3851,3853,3855,3857,3859,3861,3863,3865,3867,3869,3871,3873,3875,3877,3879,3881,3883,3885,3887,3889,3891,3893,3895,3897,3899,3901,3903,3905,3907],{"categories":342},[343],"Developer Productivity",{"categories":345},[346],"Business & SaaS",{"categories":348},[349],"AI & LLMs",{"categories":351},[352],"AI Automation",{"categories":354},[355],"Product Strategy",{"categories":357},[349],{"categories":359},[343],{"categories":361},[346],{"categories":363},[],{"categories":365},[349],{"categories":367},[],{"categories":369},[370],"AI News & Trends",{"categories":372},[352],{"categories":374},[370],{"categories":376},[352],{"categories":378},[352],{"categories":380},[349],{"categories":382},[349],{"categories":384},[370],{"categories":386},[349],{"categories":388},[],{"categories":390},[391],"Design & Frontend",{"categories":393},[394],"Data Science & Visualization",{"categories":396},[370],{"categories":398},[],{"categories":400},[300],{"categories":402},[349],{"categories":404},[352],{"categories":406},[407],"Marketing & Growth",{"categories":409},[349],{"categories":411},[352],{"categories":413},[],{"categories":415},[],{"categories":417},[391],{"categories":419},[352],{"categories":421},[343],{"categories":423},[391],{"categories":425},[349],{"categories":427},[352],{"categories":429},[370],{"categories":431},[],{"categories":433},[],{"categories":435},[352],{"categories":437},[300],{"categories":439},[],{"categories":441},[346],{"categories":443},[],{"categories":445},[],{"categories":447},[352],{"categories":449},[352],{"categories":451},[349],{"categories":453},[],{"categories":455},[300],{"categories":457},[],{"categories":459},[],{"categories":461},[],{"categories":463},[349],{"categories":465},[407],{"categories":467},[391],{"categories":469},[391],{"categories":471},[349],{"categories":473},[352],{"categories":475},[349],{"categories":477},[349],{"categories":479},[352],{"categories":481},[352],{"categories":483},[394],{"categories":485},[370],{"categories":487},[352],{"categories":489},[407],{"categories":491},[352],{"categories":493},[355],{"categories":495},[],{"categories":497},[352],{"categories":499},[],{"categories":501},[352],{"categories":503},[300],{"categories":505},[391],{"categories":507},[349],{"categories":509},[],{"categories":511},[],{"categories":513},[352],{"categories":515},[],{"categories":517},[349],{"categories":519},[],{"categories":521},[343],{"categories":523},[300],{"categories":525},[346],{"categories":527},[370],{"categories":529},[349],{"categories":531},[],{"categories":533},[349],{"categories":535},[],{"categories":537},[300],{"categories":539},[394],{"categories":541},[],{"categories":543},[349],{"categories":545},[391],{"categories":547},[],{"categories":549},[391],{"categories":551},[352],{"categories":553},[],{"categories":555},[352],{"categories":557},[370],{"categories":559},[349],{"categories":561},[],{"categories":563},[352],{"categories":565},[349],{"categories":567},[355],{"categories":569},[],{"categories":571},[349],{"categories":573},[352],{"categories":575},[352],{"categories":577},[],{"categories":579},[394],{"categories":581},[349],{"categories":583},[],{"categories":585},[343],{"categories":587},[346],{"categories":589},[349],{"categories":591},[352],{"categories":593},[300],{"categories":595},[349],{"categories":597},[],{"categories":599},[],{"categories":601},[349],{"categories":603},[],{"categories":605},[391],{"categories":607},[],{"categories":609},[349],{"categories":611},[],{"categories":613},[352],{"categories":615},[349],{"categories":617},[391],{"categories":619},[],{"categories":621},[349],{"categories":623},[349],{"categories":625},[346],{"categories":627},[352],{"categories":629},[349],{"categories":631},[391],{"categories":633},[352],{"categories":635},[],{"categories":637},[],{"categories":639},[370],{"categories":641},[],{"categories":643},[349],{"categories":645},[346,407],{"categories":647},[],{"categories":649},[349],{"categories":651},[],{"categories":653},[],{"categories":655},[349],{"categories":657},[],{"categories":659},[349],{"categories":661},[662],"DevOps & Cloud",{"categories":664},[],{"categories":666},[370],{"categories":668},[391],{"categories":670},[],{"categories":672},[370],{"categories":674},[370],{"categories":676},[349],{"categories":678},[407],{"categories":680},[],{"categories":682},[346],{"categories":684},[],{"categories":686},[349,662],{"categories":688},[349],{"categories":690},[349],{"categories":692},[352],{"categories":694},[349,300],{"categories":696},[394],{"categories":698},[349],{"categories":700},[407],{"categories":702},[352],{"categories":704},[352],{"categories":706},[],{"categories":708},[352],{"categories":710},[349,346],{"categories":712},[],{"categories":714},[391],{"categories":716},[391],{"categories":718},[],{"categories":720},[],{"categories":722},[370],{"categories":724},[],{"categories":726},[343],{"categories":728},[300],{"categories":730},[349],{"categories":732},[391],{"categories":734},[352],{"categories":736},[300],{"categories":738},[370],{"categories":740},[391],{"categories":742},[],{"categories":744},[349],{"categories":746},[349],{"categories":748},[349],{"categories":750},[370],{"categories":752},[343],{"categories":754},[349],{"categories":756},[352],{"categories":758},[662],{"categories":760},[391],{"categories":762},[352],{"categories":764},[],{"categories":766},[],{"categories":768},[391],{"categories":770},[370],{"categories":772},[394],{"categories":774},[],{"categories":776},[349],{"categories":778},[349],{"categories":780},[346],{"categories":782},[349],{"categories":784},[349],{"categories":786},[370],{"categories":788},[],{"categories":790},[352],{"categories":792},[300],{"categories":794},[],{"categories":796},[349],{"categories":798},[349],{"categories":800},[352],{"categories":802},[],{"categories":804},[],{"categories":806},[349],{"categories":808},[],{"categories":810},[346],{"categories":812},[352],{"categories":814},[],{"categories":816},[343],{"categories":818},[349],{"categories":820},[346],{"categories":822},[370],{"categories":824},[],{"categories":826},[],{"categories":828},[],{"categories":830},[370],{"categories":832},[370],{"categories":834},[],{"categories":836},[],{"categories":838},[346],{"categories":840},[],{"categories":842},[],{"categories":844},[343],{"categories":846},[],{"categories":848},[407],{"categories":850},[352],{"categories":852},[346],{"categories":854},[352],{"categories":856},[],{"categories":858},[355],{"categories":860},[391],{"categories":862},[300],{"categories":864},[349],{"categories":866},[352],{"categories":868},[346],{"categories":870},[349],{"categories":872},[],{"categories":874},[],{"categories":876},[300],{"categories":878},[394],{"categories":880},[355],{"categories":882},[352],{"categories":884},[349],{"categories":886},[],{"categories":888},[662],{"categories":890},[],{"categories":892},[352],{"categories":894},[],{"categories":896},[],{"categories":898},[349],{"categories":900},[391],{"categories":902},[407],{"categories":904},[352],{"categories":906},[],{"categories":908},[343],{"categories":910},[],{"categories":912},[370],{"categories":914},[349,662],{"categories":916},[370],{"categories":918},[349],{"categories":920},[346],{"categories":922},[349],{"categories":924},[],{"categories":926},[346],{"categories":928},[],{"categories":930},[300],{"categories":932},[391],{"categories":934},[370],{"categories":936},[394],{"categories":938},[343],{"categories":940},[349],{"categories":942},[300],{"categories":944},[],{"categories":946},[],{"categories":948},[355],{"categories":950},[],{"categories":952},[349],{"categories":954},[],{"categories":956},[391],{"categories":958},[391],{"categories":960},[391],{"categories":962},[],{"categories":964},[],{"categories":966},[370],{"categories":968},[352],{"categories":970},[349],{"categories":972},[349],{"categories":974},[349],{"categories":976},[346],{"categories":978},[349],{"categories":980},[],{"categories":982},[300],{"categories":984},[300],{"categories":986},[346],{"categories":988},[],{"categories":990},[349],{"categories":992},[349],{"categories":994},[346],{"categories":996},[370],{"categories":998},[407],{"categories":1000},[352],{"categories":1002},[],{"categories":1004},[391],{"categories":1006},[],{"categories":1008},[349],{"categories":1010},[],{"categories":1012},[346],{"categories":1014},[352],{"categories":1016},[],{"categories":1018},[662],{"categories":1020},[394],{"categories":1022},[300],{"categories":1024},[407],{"categories":1026},[300],{"categories":1028},[352],{"categories":1030},[],{"categories":1032},[],{"categories":1034},[352],{"categories":1036},[343],{"categories":1038},[352],{"categories":1040},[355],{"categories":1042},[346],{"categories":1044},[],{"categories":1046},[349],{"categories":1048},[355],{"categories":1050},[349],{"categories":1052},[349],{"categories":1054},[407],{"categories":1056},[391],{"categories":1058},[352],{"categories":1060},[],{"categories":1062},[],{"categories":1064},[662],{"categories":1066},[300],{"categories":1068},[],{"categories":1070},[352],{"categories":1072},[349],{"categories":1074},[391,349],{"categories":1076},[343],{"categories":1078},[],{"categories":1080},[349],{"categories":1082},[343],{"categories":1084},[391],{"categories":1086},[352],{"categories":1088},[300],{"categories":1090},[],{"categories":1092},[349],{"categories":1094},[],{"categories":1096},[343],{"categories":1098},[],{"categories":1100},[352],{"categories":1102},[355],{"categories":1104},[349],{"categories":1106},[349],{"categories":1108},[391],{"categories":1110},[352],{"categories":1112},[662],{"categories":1114},[391],{"categories":1116},[352],{"categories":1118},[349],{"categories":1120},[349],{"categories":1122},[349],{"categories":1124},[370],{"categories":1126},[],{"categories":1128},[355],{"categories":1130},[352],{"categories":1132},[391],{"categories":1134},[352],{"categories":1136},[300],{"categories":1138},[391],{"categories":1140},[352],{"categories":1142},[370],{"categories":1144},[],{"categories":1146},[349],{"categories":1148},[391],{"categories":1150},[349],{"categories":1152},[343],{"categories":1154},[370],{"categories":1156},[349],{"categories":1158},[407],{"categories":1160},[349],{"categories":1162},[349],{"categories":1164},[352],{"categories":1166},[352],{"categories":1168},[349],{"categories":1170},[352],{"categories":1172},[391],{"categories":1174},[349],{"categories":1176},[],{"categories":1178},[],{"categories":1180},[300],{"categories":1182},[],{"categories":1184},[343],{"categories":1186},[662],{"categories":1188},[],{"categories":1190},[343],{"categories":1192},[346],{"categories":1194},[407],{"categories":1196},[],{"categories":1198},[346],{"categories":1200},[],{"categories":1202},[],{"categories":1204},[],{"categories":1206},[],{"categories":1208},[],{"categories":1210},[349],{"categories":1212},[352],{"categories":1214},[662],{"categories":1216},[343],{"categories":1218},[349],{"categories":1220},[300],{"categories":1222},[355],{"categories":1224},[349],{"categories":1226},[407],{"categories":1228},[349],{"categories":1230},[349],{"categories":1232},[349],{"categories":1234},[349,343],{"categories":1236},[300],{"categories":1238},[300],{"categories":1240},[391],{"categories":1242},[349],{"categories":1244},[],{"categories":1246},[],{"categories":1248},[],{"categories":1250},[300],{"categories":1252},[394],{"categories":1254},[370],{"categories":1256},[391],{"categories":1258},[],{"categories":1260},[349],{"categories":1262},[349],{"categories":1264},[],{"categories":1266},[],{"categories":1268},[352],{"categories":1270},[349],{"categories":1272},[346],{"categories":1274},[],{"categories":1276},[343],{"categories":1278},[349],{"categories":1280},[343],{"categories":1282},[349],{"categories":1284},[300],{"categories":1286},[407],{"categories":1288},[349,391],{"categories":1290},[370],{"categories":1292},[391],{"categories":1294},[],{"categories":1296},[662],{"categories":1298},[391],{"categories":1300},[352],{"categories":1302},[],{"categories":1304},[],{"categories":1306},[],{"categories":1308},[],{"categories":1310},[300],{"categories":1312},[352],{"categories":1314},[352],{"categories":1316},[349],{"categories":1318},[349],{"categories":1320},[],{"categories":1322},[391],{"categories":1324},[],{"categories":1326},[],{"categories":1328},[352],{"categories":1330},[],{"categories":1332},[],{"categories":1334},[407],{"categories":1336},[407],{"categories":1338},[352],{"categories":1340},[],{"categories":1342},[349],{"categories":1344},[349],{"categories":1346},[300],{"categories":1348},[391],{"categories":1350},[391],{"categories":1352},[352],{"categories":1354},[343],{"categories":1356},[349],{"categories":1358},[391],{"categories":1360},[391],{"categories":1362},[352],{"categories":1364},[352],{"categories":1366},[349],{"categories":1368},[],{"categories":1370},[],{"categories":1372},[349],{"categories":1374},[352],{"categories":1376},[370],{"categories":1378},[300],{"categories":1380},[343],{"categories":1382},[349],{"categories":1384},[],{"categories":1386},[352],{"categories":1388},[352],{"categories":1390},[],{"categories":1392},[343],{"categories":1394},[349],{"categories":1396},[343],{"categories":1398},[343],{"categories":1400},[],{"categories":1402},[],{"categories":1404},[352],{"categories":1406},[352],{"categories":1408},[349],{"categories":1410},[349],{"categories":1412},[370],{"categories":1414},[394],{"categories":1416},[355],{"categories":1418},[370],{"categories":1420},[391],{"categories":1422},[],{"categories":1424},[370],{"categories":1426},[],{"categories":1428},[],{"categories":1430},[],{"categories":1432},[],{"categories":1434},[300],{"categories":1436},[394],{"categories":1438},[],{"categories":1440},[349],{"categories":1442},[349],{"categories":1444},[394],{"categories":1446},[300],{"categories":1448},[],{"categories":1450},[],{"categories":1452},[352],{"categories":1454},[370],{"categories":1456},[370],{"categories":1458},[352],{"categories":1460},[343],{"categories":1462},[349,662],{"categories":1464},[],{"categories":1466},[391],{"categories":1468},[343],{"categories":1470},[352],{"categories":1472},[391],{"categories":1474},[],{"categories":1476},[352],{"categories":1478},[352],{"categories":1480},[349],{"categories":1482},[407],{"categories":1484},[300],{"categories":1486},[391],{"categories":1488},[],{"categories":1490},[352],{"categories":1492},[349],{"categories":1494},[352],{"categories":1496},[352],{"categories":1498},[352],{"categories":1500},[407],{"categories":1502},[352],{"categories":1504},[349],{"categories":1506},[],{"categories":1508},[407],{"categories":1510},[370],{"categories":1512},[352],{"categories":1514},[],{"categories":1516},[],{"categories":1518},[349],{"categories":1520},[352],{"categories":1522},[370],{"categories":1524},[352],{"categories":1526},[],{"categories":1528},[],{"categories":1530},[],{"categories":1532},[352],{"categories":1534},[],{"categories":1536},[],{"categories":1538},[394],{"categories":1540},[349],{"categories":1542},[394],{"categories":1544},[370],{"categories":1546},[349],{"categories":1548},[349],{"categories":1550},[352],{"categories":1552},[349],{"categories":1554},[],{"categories":1556},[],{"categories":1558},[662],{"categories":1560},[],{"categories":1562},[],{"categories":1564},[343],{"categories":1566},[],{"categories":1568},[],{"categories":1570},[],{"categories":1572},[],{"categories":1574},[300],{"categories":1576},[370],{"categories":1578},[407],{"categories":1580},[346],{"categories":1582},[349],{"categories":1584},[349],{"categories":1586},[346],{"categories":1588},[],{"categories":1590},[391],{"categories":1592},[352],{"categories":1594},[346],{"categories":1596},[349],{"categories":1598},[349],{"categories":1600},[343],{"categories":1602},[],{"categories":1604},[343],{"categories":1606},[349],{"categories":1608},[407],{"categories":1610},[352],{"categories":1612},[370],{"categories":1614},[346],{"categories":1616},[349],{"categories":1618},[352],{"categories":1620},[],{"categories":1622},[349],{"categories":1624},[343],{"categories":1626},[349],{"categories":1628},[],{"categories":1630},[370],{"categories":1632},[349],{"categories":1634},[],{"categories":1636},[346],{"categories":1638},[349],{"categories":1640},[],{"categories":1642},[],{"categories":1644},[],{"categories":1646},[349],{"categories":1648},[],{"categories":1650},[662],{"categories":1652},[349],{"categories":1654},[],{"categories":1656},[349],{"categories":1658},[349],{"categories":1660},[349],{"categories":1662},[349,662],{"categories":1664},[349],{"categories":1666},[349],{"categories":1668},[391],{"categories":1670},[352],{"categories":1672},[],{"categories":1674},[352],{"categories":1676},[349],{"categories":1678},[349],{"categories":1680},[349],{"categories":1682},[343],{"categories":1684},[343],{"categories":1686},[300],{"categories":1688},[391],{"categories":1690},[352],{"categories":1692},[],{"categories":1694},[349],{"categories":1696},[370],{"categories":1698},[349],{"categories":1700},[346],{"categories":1702},[],{"categories":1704},[662],{"categories":1706},[391],{"categories":1708},[391],{"categories":1710},[352],{"categories":1712},[370],{"categories":1714},[352],{"categories":1716},[349],{"categories":1718},[],{"categories":1720},[349],{"categories":1722},[],{"categories":1724},[],{"categories":1726},[349],{"categories":1728},[349],{"categories":1730},[349],{"categories":1732},[352],{"categories":1734},[349],{"categories":1736},[],{"categories":1738},[394],{"categories":1740},[352],{"categories":1742},[],{"categories":1744},[349],{"categories":1746},[370],{"categories":1748},[],{"categories":1750},[391],{"categories":1752},[662],{"categories":1754},[370],{"categories":1756},[300],{"categories":1758},[300],{"categories":1760},[370],{"categories":1762},[370],{"categories":1764},[662],{"categories":1766},[],{"categories":1768},[370],{"categories":1770},[349],{"categories":1772},[343],{"categories":1774},[370],{"categories":1776},[],{"categories":1778},[394],{"categories":1780},[370],{"categories":1782},[300],{"categories":1784},[370],{"categories":1786},[662],{"categories":1788},[349],{"categories":1790},[349],{"categories":1792},[],{"categories":1794},[346],{"categories":1796},[],{"categories":1798},[],{"categories":1800},[349],{"categories":1802},[349],{"categories":1804},[349],{"categories":1806},[349],{"categories":1808},[],{"categories":1810},[394],{"categories":1812},[343],{"categories":1814},[],{"categories":1816},[349],{"categories":1818},[349],{"categories":1820},[662],{"categories":1822},[662],{"categories":1824},[],{"categories":1826},[352],{"categories":1828},[370],{"categories":1830},[370],{"categories":1832},[349],{"categories":1834},[352],{"categories":1836},[],{"categories":1838},[391],{"categories":1840},[349],{"categories":1842},[349],{"categories":1844},[],{"categories":1846},[],{"categories":1848},[662],{"categories":1850},[349],{"categories":1852},[300],{"categories":1854},[346],{"categories":1856},[349],{"categories":1858},[],{"categories":1860},[352],{"categories":1862},[343],{"categories":1864},[343],{"categories":1866},[],{"categories":1868},[349],{"categories":1870},[391],{"categories":1872},[352],{"categories":1874},[],{"categories":1876},[349],{"categories":1878},[349],{"categories":1880},[352],{"categories":1882},[],{"categories":1884},[352],{"categories":1886},[300],{"categories":1888},[],{"categories":1890},[349],{"categories":1892},[],{"categories":1894},[349],{"categories":1896},[],{"categories":1898},[349],{"categories":1900},[349],{"categories":1902},[],{"categories":1904},[349],{"categories":1906},[370],{"categories":1908},[349],{"categories":1910},[349],{"categories":1912},[343],{"categories":1914},[349],{"categories":1916},[370],{"categories":1918},[352],{"categories":1920},[],{"categories":1922},[349],{"categories":1924},[407],{"categories":1926},[],{"categories":1928},[],{"categories":1930},[],{"categories":1932},[343],{"categories":1934},[370],{"categories":1936},[352],{"categories":1938},[349],{"categories":1940},[391],{"categories":1942},[352],{"categories":1944},[],{"categories":1946},[352],{"categories":1948},[],{"categories":1950},[349],{"categories":1952},[352],{"categories":1954},[349],{"categories":1956},[],{"categories":1958},[349],{"categories":1960},[349],{"categories":1962},[370],{"categories":1964},[391],{"categories":1966},[352],{"categories":1968},[391],{"categories":1970},[346],{"categories":1972},[],{"categories":1974},[],{"categories":1976},[349],{"categories":1978},[343],{"categories":1980},[370],{"categories":1982},[],{"categories":1984},[],{"categories":1986},[300],{"categories":1988},[391],{"categories":1990},[],{"categories":1992},[349],{"categories":1994},[],{"categories":1996},[407],{"categories":1998},[349],{"categories":2000},[662],{"categories":2002},[300],{"categories":2004},[],{"categories":2006},[352],{"categories":2008},[349],{"categories":2010},[352],{"categories":2012},[352],{"categories":2014},[349],{"categories":2016},[],{"categories":2018},[343],{"categories":2020},[349],{"categories":2022},[346],{"categories":2024},[300],{"categories":2026},[391],{"categories":2028},[],{"categories":2030},[],{"categories":2032},[],{"categories":2034},[352],{"categories":2036},[391],{"categories":2038},[370],{"categories":2040},[349],{"categories":2042},[370],{"categories":2044},[391],{"categories":2046},[],{"categories":2048},[391],{"categories":2050},[370],{"categories":2052},[346],{"categories":2054},[349],{"categories":2056},[370],{"categories":2058},[407],{"categories":2060},[],{"categories":2062},[],{"categories":2064},[394],{"categories":2066},[349,300],{"categories":2068},[370],{"categories":2070},[349],{"categories":2072},[352],{"categories":2074},[352],{"categories":2076},[349],{"categories":2078},[],{"categories":2080},[300],{"categories":2082},[349],{"categories":2084},[394],{"categories":2086},[352],{"categories":2088},[407],{"categories":2090},[662],{"categories":2092},[],{"categories":2094},[343],{"categories":2096},[352],{"categories":2098},[352],{"categories":2100},[300],{"categories":2102},[349],{"categories":2104},[349],{"categories":2106},[],{"categories":2108},[],{"categories":2110},[],{"categories":2112},[662],{"categories":2114},[370],{"categories":2116},[349],{"categories":2118},[349],{"categories":2120},[349],{"categories":2122},[],{"categories":2124},[394],{"categories":2126},[346],{"categories":2128},[],{"categories":2130},[352],{"categories":2132},[662],{"categories":2134},[],{"categories":2136},[391],{"categories":2138},[391],{"categories":2140},[],{"categories":2142},[300],{"categories":2144},[391],{"categories":2146},[349],{"categories":2148},[],{"categories":2150},[370],{"categories":2152},[349],{"categories":2154},[391],{"categories":2156},[352],{"categories":2158},[370],{"categories":2160},[],{"categories":2162},[352],{"categories":2164},[391],{"categories":2166},[349],{"categories":2168},[],{"categories":2170},[349],{"categories":2172},[349],{"categories":2174},[662],{"categories":2176},[370],{"categories":2178},[394],{"categories":2180},[394],{"categories":2182},[],{"categories":2184},[],{"categories":2186},[],{"categories":2188},[352],{"categories":2190},[300],{"categories":2192},[300],{"categories":2194},[],{"categories":2196},[],{"categories":2198},[349],{"categories":2200},[],{"categories":2202},[352],{"categories":2204},[349],{"categories":2206},[],{"categories":2208},[349],{"categories":2210},[346],{"categories":2212},[349],{"categories":2214},[407],{"categories":2216},[352],{"categories":2218},[349],{"categories":2220},[300],{"categories":2222},[370],{"categories":2224},[352],{"categories":2226},[],{"categories":2228},[370],{"categories":2230},[352],{"categories":2232},[352],{"categories":2234},[],{"categories":2236},[346],{"categories":2238},[352],{"categories":2240},[],{"categories":2242},[349],{"categories":2244},[343],{"categories":2246},[370],{"categories":2248},[662],{"categories":2250},[352],{"categories":2252},[352],{"categories":2254},[343],{"categories":2256},[349],{"categories":2258},[],{"categories":2260},[],{"categories":2262},[391],{"categories":2264},[349,346],{"categories":2266},[],{"categories":2268},[343],{"categories":2270},[394],{"categories":2272},[349],{"categories":2274},[300],{"categories":2276},[349],{"categories":2278},[352],{"categories":2280},[349],{"categories":2282},[349],{"categories":2284},[370],{"categories":2286},[352],{"categories":2288},[],{"categories":2290},[],{"categories":2292},[352],{"categories":2294},[349],{"categories":2296},[662],{"categories":2298},[],{"categories":2300},[349],{"categories":2302},[352],{"categories":2304},[],{"categories":2306},[349],{"categories":2308},[407],{"categories":2310},[394],{"categories":2312},[352],{"categories":2314},[349],{"categories":2316},[662],{"categories":2318},[],{"categories":2320},[349],{"categories":2322},[407],{"categories":2324},[391],{"categories":2326},[349],{"categories":2328},[],{"categories":2330},[407],{"categories":2332},[370],{"categories":2334},[349],{"categories":2336},[349],{"categories":2338},[343],{"categories":2340},[],{"categories":2342},[],{"categories":2344},[391],{"categories":2346},[349],{"categories":2348},[394],{"categories":2350},[407],{"categories":2352},[407],{"categories":2354},[370],{"categories":2356},[],{"categories":2358},[],{"categories":2360},[349],{"categories":2362},[],{"categories":2364},[349,300],{"categories":2366},[370],{"categories":2368},[352],{"categories":2370},[300],{"categories":2372},[349],{"categories":2374},[343],{"categories":2376},[],{"categories":2378},[],{"categories":2380},[343],{"categories":2382},[407],{"categories":2384},[349],{"categories":2386},[],{"categories":2388},[391,349],{"categories":2390},[662],{"categories":2392},[343],{"categories":2394},[],{"categories":2396},[346],{"categories":2398},[346],{"categories":2400},[349],{"categories":2402},[300],{"categories":2404},[352],{"categories":2406},[370],{"categories":2408},[407],{"categories":2410},[391],{"categories":2412},[349],{"categories":2414},[349],{"categories":2416},[349],{"categories":2418},[343],{"categories":2420},[349],{"categories":2422},[352],{"categories":2424},[370],{"categories":2426},[],{"categories":2428},[],{"categories":2430},[394],{"categories":2432},[300],{"categories":2434},[349],{"categories":2436},[391],{"categories":2438},[394],{"categories":2440},[349],{"categories":2442},[349],{"categories":2444},[352],{"categories":2446},[352],{"categories":2448},[349,346],{"categories":2450},[],{"categories":2452},[391],{"categories":2454},[],{"categories":2456},[349],{"categories":2458},[370],{"categories":2460},[343],{"categories":2462},[343],{"categories":2464},[352],{"categories":2466},[349],{"categories":2468},[346],{"categories":2470},[300],{"categories":2472},[407],{"categories":2474},[],{"categories":2476},[370],{"categories":2478},[349],{"categories":2480},[349],{"categories":2482},[370],{"categories":2484},[300],{"categories":2486},[349],{"categories":2488},[352],{"categories":2490},[370],{"categories":2492},[349],{"categories":2494},[391],{"categories":2496},[349],{"categories":2498},[349],{"categories":2500},[662],{"categories":2502},[355],{"categories":2504},[352],{"categories":2506},[349],{"categories":2508},[370],{"categories":2510},[352],{"categories":2512},[407],{"categories":2514},[349],{"categories":2516},[],{"categories":2518},[349],{"categories":2520},[],{"categories":2522},[],{"categories":2524},[],{"categories":2526},[346],{"categories":2528},[349],{"categories":2530},[352],{"categories":2532},[370],{"categories":2534},[370],{"categories":2536},[370],{"categories":2538},[370],{"categories":2540},[],{"categories":2542},[343],{"categories":2544},[352],{"categories":2546},[370],{"categories":2548},[343],{"categories":2550},[352],{"categories":2552},[349],{"categories":2554},[349,352],{"categories":2556},[352],{"categories":2558},[662],{"categories":2560},[370],{"categories":2562},[370],{"categories":2564},[352],{"categories":2566},[349],{"categories":2568},[],{"categories":2570},[370],{"categories":2572},[407],{"categories":2574},[343],{"categories":2576},[349],{"categories":2578},[349],{"categories":2580},[],{"categories":2582},[300],{"categories":2584},[],{"categories":2586},[343],{"categories":2588},[352],{"categories":2590},[370],{"categories":2592},[349],{"categories":2594},[370],{"categories":2596},[343],{"categories":2598},[370],{"categories":2600},[370],{"categories":2602},[],{"categories":2604},[346],{"categories":2606},[352],{"categories":2608},[370],{"categories":2610},[370],{"categories":2612},[370],{"categories":2614},[370],{"categories":2616},[370],{"categories":2618},[370],{"categories":2620},[370],{"categories":2622},[370],{"categories":2624},[370],{"categories":2626},[370],{"categories":2628},[394],{"categories":2630},[343],{"categories":2632},[349],{"categories":2634},[349],{"categories":2636},[],{"categories":2638},[349,343],{"categories":2640},[],{"categories":2642},[352],{"categories":2644},[370],{"categories":2646},[352],{"categories":2648},[349],{"categories":2650},[349],{"categories":2652},[349],{"categories":2654},[349],{"categories":2656},[349],{"categories":2658},[352],{"categories":2660},[346],{"categories":2662},[391],{"categories":2664},[370],{"categories":2666},[349],{"categories":2668},[],{"categories":2670},[],{"categories":2672},[352],{"categories":2674},[391],{"categories":2676},[349],{"categories":2678},[],{"categories":2680},[],{"categories":2682},[407],{"categories":2684},[349],{"categories":2686},[],{"categories":2688},[],{"categories":2690},[343],{"categories":2692},[346],{"categories":2694},[349],{"categories":2696},[346],{"categories":2698},[391],{"categories":2700},[],{"categories":2702},[370],{"categories":2704},[],{"categories":2706},[391],{"categories":2708},[349],{"categories":2710},[407],{"categories":2712},[],{"categories":2714},[407],{"categories":2716},[],{"categories":2718},[],{"categories":2720},[352],{"categories":2722},[],{"categories":2724},[346],{"categories":2726},[343],{"categories":2728},[391],{"categories":2730},[300],{"categories":2732},[],{"categories":2734},[],{"categories":2736},[349],{"categories":2738},[343],{"categories":2740},[407],{"categories":2742},[],{"categories":2744},[352],{"categories":2746},[352],{"categories":2748},[370],{"categories":2750},[349],{"categories":2752},[352],{"categories":2754},[349],{"categories":2756},[352],{"categories":2758},[349],{"categories":2760},[355],{"categories":2762},[370],{"categories":2764},[],{"categories":2766},[407],{"categories":2768},[300],{"categories":2770},[352],{"categories":2772},[],{"categories":2774},[349],{"categories":2776},[352],{"categories":2778},[346],{"categories":2780},[343],{"categories":2782},[349],{"categories":2784},[391],{"categories":2786},[300],{"categories":2788},[300],{"categories":2790},[349],{"categories":2792},[394],{"categories":2794},[349],{"categories":2796},[352],{"categories":2798},[346],{"categories":2800},[352],{"categories":2802},[349],{"categories":2804},[349],{"categories":2806},[352],{"categories":2808},[370],{"categories":2810},[],{"categories":2812},[343],{"categories":2814},[349],{"categories":2816},[352],{"categories":2818},[349],{"categories":2820},[349],{"categories":2822},[],{"categories":2824},[391],{"categories":2826},[346],{"categories":2828},[370],{"categories":2830},[349],{"categories":2832},[349],{"categories":2834},[391],{"categories":2836},[407],{"categories":2838},[394],{"categories":2840},[349],{"categories":2842},[370],{"categories":2844},[349],{"categories":2846},[352],{"categories":2848},[662],{"categories":2850},[349],{"categories":2852},[352],{"categories":2854},[394],{"categories":2856},[],{"categories":2858},[352],{"categories":2860},[300],{"categories":2862},[391],{"categories":2864},[349],{"categories":2866},[343],{"categories":2868},[346],{"categories":2870},[300],{"categories":2872},[],{"categories":2874},[352],{"categories":2876},[349],{"categories":2878},[],{"categories":2880},[370],{"categories":2882},[],{"categories":2884},[370],{"categories":2886},[349],{"categories":2888},[352],{"categories":2890},[352],{"categories":2892},[352],{"categories":2894},[],{"categories":2896},[],{"categories":2898},[349],{"categories":2900},[349],{"categories":2902},[],{"categories":2904},[391],{"categories":2906},[352],{"categories":2908},[407],{"categories":2910},[343],{"categories":2912},[],{"categories":2914},[],{"categories":2916},[370],{"categories":2918},[300],{"categories":2920},[349],{"categories":2922},[349],{"categories":2924},[349],{"categories":2926},[300],{"categories":2928},[370],{"categories":2930},[391],{"categories":2932},[349],{"categories":2934},[349],{"categories":2936},[349],{"categories":2938},[370],{"categories":2940},[349],{"categories":2942},[370],{"categories":2944},[352],{"categories":2946},[352],{"categories":2948},[300],{"categories":2950},[352],{"categories":2952},[349],{"categories":2954},[300],{"categories":2956},[391],{"categories":2958},[],{"categories":2960},[352],{"categories":2962},[],{"categories":2964},[],{"categories":2966},[346],{"categories":2968},[349],{"categories":2970},[352],{"categories":2972},[343],{"categories":2974},[352],{"categories":2976},[407],{"categories":2978},[],{"categories":2980},[352],{"categories":2982},[],{"categories":2984},[343],{"categories":2986},[352],{"categories":2988},[],{"categories":2990},[352],{"categories":2992},[349],{"categories":2994},[370],{"categories":2996},[349],{"categories":2998},[352],{"categories":3000},[370],{"categories":3002},[352],{"categories":3004},[300],{"categories":3006},[391],{"categories":3008},[343],{"categories":3010},[],{"categories":3012},[352],{"categories":3014},[391],{"categories":3016},[370],{"categories":3018},[349],{"categories":3020},[391],{"categories":3022},[343],{"categories":3024},[],{"categories":3026},[352],{"categories":3028},[352],{"categories":3030},[349],{"categories":3032},[],{"categories":3034},[352],{"categories":3036},[355],{"categories":3038},[370],{"categories":3040},[352],{"categories":3042},[346],{"categories":3044},[],{"categories":3046},[349],{"categories":3048},[355],{"categories":3050},[349],{"categories":3052},[352],{"categories":3054},[370],{"categories":3056},[343],{"categories":3058},[662],{"categories":3060},[349],{"categories":3062},[349],{"categories":3064},[349],{"categories":3066},[370],{"categories":3068},[346],{"categories":3070},[349],{"categories":3072},[391],{"categories":3074},[370],{"categories":3076},[662],{"categories":3078},[349],{"categories":3080},[],{"categories":3082},[],{"categories":3084},[662],{"categories":3086},[394],{"categories":3088},[352],{"categories":3090},[352],{"categories":3092},[370],{"categories":3094},[349],{"categories":3096},[343],{"categories":3098},[391],{"categories":3100},[352],{"categories":3102},[349],{"categories":3104},[407],{"categories":3106},[349],{"categories":3108},[352],{"categories":3110},[],{"categories":3112},[349],{"categories":3114},[349],{"categories":3116},[370],{"categories":3118},[343],{"categories":3120},[],{"categories":3122},[349],{"categories":3124},[349],{"categories":3126},[300],{"categories":3128},[391],{"categories":3130},[349,352],{"categories":3132},[407,346],{"categories":3134},[349],{"categories":3136},[],{"categories":3138},[352],{"categories":3140},[],{"categories":3142},[300],{"categories":3144},[349],{"categories":3146},[370],{"categories":3148},[],{"categories":3150},[352],{"categories":3152},[],{"categories":3154},[352],{"categories":3156},[343],{"categories":3158},[352],{"categories":3160},[349],{"categories":3162},[662],{"categories":3164},[407],{"categories":3166},[346],{"categories":3168},[346],{"categories":3170},[343],{"categories":3172},[343],{"categories":3174},[349],{"categories":3176},[352],{"categories":3178},[349],{"categories":3180},[349],{"categories":3182},[343],{"categories":3184},[349],{"categories":3186},[407],{"categories":3188},[370],{"categories":3190},[349],{"categories":3192},[352],{"categories":3194},[349],{"categories":3196},[],{"categories":3198},[300],{"categories":3200},[],{"categories":3202},[352],{"categories":3204},[343],{"categories":3206},[],{"categories":3208},[662],{"categories":3210},[349],{"categories":3212},[],{"categories":3214},[370],{"categories":3216},[352],{"categories":3218},[300],{"categories":3220},[349],{"categories":3222},[352],{"categories":3224},[300],{"categories":3226},[352],{"categories":3228},[370],{"categories":3230},[343],{"categories":3232},[370],{"categories":3234},[300],{"categories":3236},[349],{"categories":3238},[391],{"categories":3240},[349],{"categories":3242},[349],{"categories":3244},[349],{"categories":3246},[349],{"categories":3248},[352],{"categories":3250},[349],{"categories":3252},[352],{"categories":3254},[349],{"categories":3256},[343],{"categories":3258},[349],{"categories":3260},[352],{"categories":3262},[391],{"categories":3264},[343],{"categories":3266},[352],{"categories":3268},[391],{"categories":3270},[],{"categories":3272},[349],{"categories":3274},[349],{"categories":3276},[300],{"categories":3278},[],{"categories":3280},[352],{"categories":3282},[407],{"categories":3284},[349],{"categories":3286},[370],{"categories":3288},[407],{"categories":3290},[352],{"categories":3292},[346],{"categories":3294},[346],{"categories":3296},[349],{"categories":3298},[343],{"categories":3300},[],{"categories":3302},[349],{"categories":3304},[],{"categories":3306},[343],{"categories":3308},[349],{"categories":3310},[352],{"categories":3312},[352],{"categories":3314},[],{"categories":3316},[300],{"categories":3318},[300],{"categories":3320},[407],{"categories":3322},[391],{"categories":3324},[],{"categories":3326},[349],{"categories":3328},[343],{"categories":3330},[349],{"categories":3332},[300],{"categories":3334},[343],{"categories":3336},[370],{"categories":3338},[370],{"categories":3340},[],{"categories":3342},[370],{"categories":3344},[352],{"categories":3346},[391],{"categories":3348},[394],{"categories":3350},[349],{"categories":3352},[],{"categories":3354},[370],{"categories":3356},[300],{"categories":3358},[346],{"categories":3360},[349],{"categories":3362},[343],{"categories":3364},[662],{"categories":3366},[343],{"categories":3368},[],{"categories":3370},[],{"categories":3372},[370],{"categories":3374},[],{"categories":3376},[352],{"categories":3378},[352],{"categories":3380},[352],{"categories":3382},[],{"categories":3384},[349],{"categories":3386},[],{"categories":3388},[370],{"categories":3390},[343],{"categories":3392},[391],{"categories":3394},[349],{"categories":3396},[370],{"categories":3398},[370],{"categories":3400},[],{"categories":3402},[370],{"categories":3404},[343],{"categories":3406},[349],{"categories":3408},[],{"categories":3410},[352],{"categories":3412},[352],{"categories":3414},[343],{"categories":3416},[],{"categories":3418},[],{"categories":3420},[],{"categories":3422},[391],{"categories":3424},[352],{"categories":3426},[349],{"categories":3428},[],{"categories":3430},[],{"categories":3432},[],{"categories":3434},[391],{"categories":3436},[],{"categories":3438},[343],{"categories":3440},[],{"categories":3442},[],{"categories":3444},[391],{"categories":3446},[349],{"categories":3448},[370],{"categories":3450},[],{"categories":3452},[407],{"categories":3454},[370],{"categories":3456},[407],{"categories":3458},[349],{"categories":3460},[],{"categories":3462},[],{"categories":3464},[352],{"categories":3466},[],{"categories":3468},[],{"categories":3470},[352],{"categories":3472},[349],{"categories":3474},[],{"categories":3476},[352],{"categories":3478},[370],{"categories":3480},[407],{"categories":3482},[394],{"categories":3484},[352],{"categories":3486},[352],{"categories":3488},[],{"categories":3490},[],{"categories":3492},[],{"categories":3494},[370],{"categories":3496},[],{"categories":3498},[],{"categories":3500},[391],{"categories":3502},[343],{"categories":3504},[],{"categories":3506},[346],{"categories":3508},[407],{"categories":3510},[349],{"categories":3512},[300],{"categories":3514},[343],{"categories":3516},[394],{"categories":3518},[346],{"categories":3520},[300],{"categories":3522},[],{"categories":3524},[],{"categories":3526},[352],{"categories":3528},[343],{"categories":3530},[391],{"categories":3532},[343],{"categories":3534},[352],{"categories":3536},[662],{"categories":3538},[352],{"categories":3540},[],{"categories":3542},[349],{"categories":3544},[370],{"categories":3546},[300],{"categories":3548},[],{"categories":3550},[391],{"categories":3552},[370],{"categories":3554},[343],{"categories":3556},[352],{"categories":3558},[349],{"categories":3560},[346],{"categories":3562},[352,662],{"categories":3564},[352],{"categories":3566},[300],{"categories":3568},[349],{"categories":3570},[394],{"categories":3572},[407],{"categories":3574},[352],{"categories":3576},[],{"categories":3578},[352],{"categories":3580},[349],{"categories":3582},[346],{"categories":3584},[],{"categories":3586},[],{"categories":3588},[349],{"categories":3590},[394],{"categories":3592},[349],{"categories":3594},[],{"categories":3596},[370],{"categories":3598},[],{"categories":3600},[370],{"categories":3602},[300],{"categories":3604},[352],{"categories":3606},[349],{"categories":3608},[407],{"categories":3610},[300],{"categories":3612},[],{"categories":3614},[370],{"categories":3616},[349],{"categories":3618},[],{"categories":3620},[349],{"categories":3622},[352],{"categories":3624},[349],{"categories":3626},[352],{"categories":3628},[349],{"categories":3630},[349],{"categories":3632},[349],{"categories":3634},[349],{"categories":3636},[346],{"categories":3638},[],{"categories":3640},[355],{"categories":3642},[370],{"categories":3644},[349],{"categories":3646},[],{"categories":3648},[300],{"categories":3650},[349],{"categories":3652},[349],{"categories":3654},[352],{"categories":3656},[370],{"categories":3658},[349],{"categories":3660},[349],{"categories":3662},[346],{"categories":3664},[352],{"categories":3666},[391],{"categories":3668},[],{"categories":3670},[394],{"categories":3672},[349],{"categories":3674},[],{"categories":3676},[370],{"categories":3678},[407],{"categories":3680},[],{"categories":3682},[],{"categories":3684},[370],{"categories":3686},[370],{"categories":3688},[407],{"categories":3690},[343],{"categories":3692},[352],{"categories":3694},[352],{"categories":3696},[349],{"categories":3698},[346],{"categories":3700},[],{"categories":3702},[],{"categories":3704},[370],{"categories":3706},[394],{"categories":3708},[300],{"categories":3710},[352],{"categories":3712},[391],{"categories":3714},[394],{"categories":3716},[394],{"categories":3718},[],{"categories":3720},[370],{"categories":3722},[349],{"categories":3724},[349],{"categories":3726},[300],{"categories":3728},[],{"categories":3730},[370],{"categories":3732},[370],{"categories":3734},[370],{"categories":3736},[],{"categories":3738},[352],{"categories":3740},[349],{"categories":3742},[],{"categories":3744},[343],{"categories":3746},[346],{"categories":3748},[],{"categories":3750},[349],{"categories":3752},[349],{"categories":3754},[],{"categories":3756},[300],{"categories":3758},[],{"categories":3760},[],{"categories":3762},[],{"categories":3764},[],{"categories":3766},[349],{"categories":3768},[370],{"categories":3770},[],{"categories":3772},[],{"categories":3774},[349],{"categories":3776},[349],{"categories":3778},[349],{"categories":3780},[394],{"categories":3782},[349],{"categories":3784},[394],{"categories":3786},[],{"categories":3788},[394],{"categories":3790},[394],{"categories":3792},[662],{"categories":3794},[352],{"categories":3796},[300],{"categories":3798},[],{"categories":3800},[],{"categories":3802},[394],{"categories":3804},[300],{"categories":3806},[300],{"categories":3808},[300],{"categories":3810},[],{"categories":3812},[343],{"categories":3814},[300],{"categories":3816},[300],{"categories":3818},[343],{"categories":3820},[300],{"categories":3822},[346],{"categories":3824},[300],{"categories":3826},[300],{"categories":3828},[300],{"categories":3830},[394],{"categories":3832},[370],{"categories":3834},[370],{"categories":3836},[349],{"categories":3838},[300],{"categories":3840},[394],{"categories":3842},[662],{"categories":3844},[394],{"categories":3846},[394],{"categories":3848},[394],{"categories":3850},[],{"categories":3852},[346],{"categories":3854},[],{"categories":3856},[662],{"categories":3858},[300],{"categories":3860},[300],{"categories":3862},[300],{"categories":3864},[352],{"categories":3866},[370,346],{"categories":3868},[394],{"categories":3870},[],{"categories":3872},[],{"categories":3874},[394],{"categories":3876},[],{"categories":3878},[394],{"categories":3880},[370],{"categories":3882},[352],{"categories":3884},[],{"categories":3886},[300],{"categories":3888},[349],{"categories":3890},[391],{"categories":3892},[],{"categories":3894},[349],{"categories":3896},[],{"categories":3898},[370],{"categories":3900},[343],{"categories":3902},[394],{"categories":3904},[],{"categories":3906},[300],{"categories":3908},[370],[3910,4018,4076,4159],{"id":3911,"title":3912,"ai":3913,"body":3918,"categories":3993,"created_at":301,"date_modified":301,"description":293,"extension":302,"faq":301,"featured":303,"kicker_label":301,"meta":3994,"navigation":323,"path":4005,"published_at":4006,"question":301,"scraped_at":4007,"seo":4008,"sitemap":4009,"source_id":4010,"source_name":4011,"source_type":330,"source_url":4012,"stem":4013,"tags":4014,"thumbnail_url":301,"tldr":4015,"tweet":301,"unknown_tags":4016,"__hash__":4017},"summaries\u002Fsummaries\u002Fda5bfb294446c261-rust-cuda-kernels-via-direct-ptx-compilation-summary.md","Rust CUDA Kernels via Direct PTX Compilation",{"provider":7,"model":8,"input_tokens":3914,"output_tokens":3915,"processing_time_ms":3916,"cost_usd":3917},9427,1814,17557,0.00276975,{"type":14,"value":3919,"toc":3988},[3920,3924,3945,3952,3955,3959,3962,3965,3968,3972,3975,3985],[17,3921,3923],{"id":3922},"native-cuda-model-in-safe-rust-without-c-or-dsls","Native CUDA Model in Safe Rust Without C++ or DSLs",[22,3925,3926,3927,3931,3932,3936,3937],{},"cuda-oxide targets CUDA's SIMT execution model natively in Rust, closer to C++ ",[3928,3929,3930],"strong",{},"global"," functions than generic Rust async code. Mark kernels with #",[3933,3934,3935],"span",{},"kernel"," proc macro, which namespaces them as cuda_oxide_kernel_",[3938,3939,3940,3941],"hash",{},"_",[3942,3943,3944],"name",{},"; only these compile to PTX via custom rustc backend, while host code uses standard LLVM. This single-source approach in one .rs file produces host binary + target\u002Fdebug\u002Fvecadd.ptx from cargo oxide build. Device libs compile lazily from .rlib Stable MIR metadata, avoiding upfront compilation of unused code.",[22,3946,3947,3948],{},"Supports match\u002Fif let, generics like fn scale\u003CT: Copy>, intrinsics (shfl_sync, ballot_sync), and thread::index_1d() for unique hardware indices. DisjointSlice",[3949,3950,3951],"t",{}," ensures race-free mutable outputs—get_mut(idx) requires ThreadIndex (opaque usize from threadIdx\u002FblockIdx\u002FblockDim), preventing unsafe shared writes. Host launches use CudaContext, DeviceBuffer, and cuda_launch! macro with LaunchConfig::for_num_elems(1024) auto-sizing grids\u002Fblocks.",[22,3953,3954],{},"Disables rustc JumpThreading on device code to preserve bar.sync convergence—duplication breaks GPU barrier semantics. Marks syncs convergent in LLVM IR to block optimizer reordering.",[17,3956,3958],{"id":3957},"pure-rust-pipeline-except-one-external-tool","Pure-Rust Pipeline Except One External Tool",[22,3960,3961],{},"Intercepts rustc at CodegenBackend::codegen_crate() using rustc_public (Stable MIR) for version-proof internals. Pipeline: Rust → rustc frontend → Stable MIR → dialect-mir (Rust MIR semantics: places\u002Fprojections\u002Frvalues\u002Fterminators) → mem2reg → dialect-llvm → textual .ll → llc (LLVM 21+ NVPTX) → .ptx.",[22,3963,3964],{},"Uses Pliron (Rust-native MLIR-like IR) for dialects: dialect-mir, dialect-llvm (.ll export), dialect-nvvm (NVIDIA intrinsics like thread indexing\u002Fbarriers\u002FTMA). Entire stack builds with cargo—no C++\u002FCMake\u002Ftablegen. Observe full trace: cargo oxide pipeline vecadd prints MIR through PTX.",[22,3966,3967],{},"Complements rust-cuda (Rust ergonomics\u002Fasync on GPU) by focusing on CUDA-native model. vecadd example adds 1024 f32s on GPU, verifies on host: cargo oxide run vecadd outputs ✓ SUCCESS: All 1024 elements correct!",[17,3969,3971],{"id":3970},"linux-only-setup-with-pinned-nightly-and-llvm-21","Linux-Only Setup with Pinned Nightly and LLVM 21",[22,3973,3974],{},"Requires Ubuntu 24.04, Rust nightly-2026-04-03 (rustup toolchain install nightly-2026-04-03; add rust-src\u002Frustc-dev), LLVM 21+ NVPTX (sudo apt install llvm-21; llc-21 --version | grep nvptx), Clang 21 (sudo apt install clang-21 for bindgen\u002Fcuda.h). Pin llc: export CUDA_OXIDE_LLC=\u002Fusr\u002Fbin\u002Fllc-21.",[22,3976,3977,3978,3984],{},"Clone repo or cargo install --git ",[3979,3980,3981],"a",{"href":3981,"rel":3982},"https:\u002F\u002Fgithub.com\u002FNVlabs\u002Fcuda-oxide.git",[3983],"nofollow"," cargo-oxide. cargo oxide doctor checks deps. Debug: cargo oxide debug vecadd --tui with cuda-gdb on target\u002Fdebug\u002Fvecadd + .ptx.",[22,3986,3987],{},"Next: generics (cargo oxide run generic), host closures (cuda_launch_async! with .await\u002F.sync()), async_mlp, gemm_sol (cta_group::2, index_2d(stride), unsafe for &mut T). Docs: nvlabs.github.io\u002Fcuda-oxide.",{"title":293,"searchDepth":294,"depth":294,"links":3989},[3990,3991,3992],{"id":3922,"depth":294,"text":3923},{"id":3957,"depth":294,"text":3958},{"id":3970,"depth":294,"text":3971},[300],{"content_references":3995,"triage":4002},[3996,3999],{"type":312,"title":3997,"url":3998,"context":314},"cuda-oxide","https:\u002F\u002Fgithub.com\u002FNVlabs\u002Fcuda-oxide",{"type":312,"title":4000,"url":4001,"context":314},"Pliron","https:\u002F\u002Fgithub.com\u002Fvaivaswatha\u002Fpliron",{"relevance":319,"novelty":319,"quality":320,"actionability":294,"composite":4003,"reasoning":4004},3.05,"Category: Software Engineering. The article discusses a new Rust-to-CUDA compilation method, which is relevant to software engineering but lacks direct applicability for building AI-powered products. While it presents some novel insights into GPU kernel development, it does not provide actionable steps or frameworks that the target audience can implement immediately.","\u002Fsummaries\u002Fda5bfb294446c261-rust-cuda-kernels-via-direct-ptx-compilation-summary","2026-05-10 06:01:13","2026-05-10 15:26:51",{"title":3912,"description":293},{"loc":4005},"da5bfb294446c261","MarkTechPost","https:\u002F\u002Fwww.marktechpost.com\u002F2026\u002F05\u002F09\u002Fnvidia-ai-just-released-cuda-oxide-an-experimental-rust-to-cuda-compiler-backend-that-compiles-simt-gpu-kernels-directly-to-ptx\u002F","summaries\u002Fda5bfb294446c261-rust-cuda-kernels-via-direct-ptx-compilation-summary",[335,334],"cuda-oxide lets you write safe Rust SIMT GPU kernels that compile directly to PTX using a custom rustc backend, skipping C++ or DSLs—host\u002Fdevice in one .rs file, with cargo oxide build producing binary + .ptx.",[],"qMaVXANNhQRZRdddd8rExsSTPNNbNg4e1fVzT0fOhxE",{"id":4019,"title":4020,"ai":4021,"body":4026,"categories":4054,"created_at":301,"date_modified":301,"description":293,"extension":302,"faq":301,"featured":303,"kicker_label":301,"meta":4055,"navigation":323,"path":4063,"published_at":4064,"question":301,"scraped_at":4065,"seo":4066,"sitemap":4067,"source_id":4068,"source_name":4069,"source_type":330,"source_url":4070,"stem":4071,"tags":4072,"thumbnail_url":301,"tldr":4073,"tweet":301,"unknown_tags":4074,"__hash__":4075},"summaries\u002Fsummaries\u002Ff817b802265235ad-north-korea-hit-axios-npm-maintainer-exposing-100m-summary.md","North Korea Hit Axios NPM Maintainer, Exposing 100M Downloads",{"provider":7,"model":8,"input_tokens":4022,"output_tokens":4023,"processing_time_ms":4024,"cost_usd":4025},3899,1572,23422,0.00154315,{"type":14,"value":4027,"toc":4049},[4028,4032,4035,4039,4042,4046],[17,4029,4031],{"id":4030},"dependency-compromise-bypasses-target-defenses","Dependency Compromise Bypasses Target Defenses",[22,4033,4034],{},"North Korean actors (tracked as UNC1069) didn't infiltrate OpenAI systems. Instead, they targeted Jason Saayman, maintainer of the Axios npm package with over 100 million weekly downloads across most software build pipelines. A fake job offer via Microsoft Teams on March 31, 2026, led to compromise. Axios powers apps like ChatGPT Desktop, so updating the app pulled in malicious code. Lesson: Audit dependencies rigorously—treat open-source maintainers as your perimeter. Use tools like npm audit, lockfiles, and sigstore for signing to verify package integrity before installs.",[17,4036,4038],{"id":4037},"social-engineering-trumps-technical-exploits","Social Engineering Trumps Technical Exploits",[22,4040,4041],{},"Attack started with a seemingly legitimate Microsoft Teams outreach, buried in OpenAI coverage. Maintainers like Saayman face constant recruitment; hackers exploit this with tailored lures. Defend by: (1) Verify unsolicited contacts via official channels, (2) Use multi-factor auth and hardware keys for repos, (3) Rotate secrets post-contact. Impact: One compromised maintainer poisons millions of environments, amplifying reach far beyond single apps.",[17,4043,4045],{"id":4044},"media-hype-misses-supply-chain-reality","Media Hype Misses Supply Chain Reality",[22,4047,4048],{},"Outlets framed as 'OpenAI breach,' downplaying the dependency angle in paragraph four or less. True exposure: 100 million environments. Builders must prioritize supply chain security—scan pipelines with Dependabot or Snyk, prefer vendored critical deps, and monitor maintainer activity. Trade-off: Full isolation slows dev velocity, but partial (e.g., air-gapped builds for prod) prevents catastrophic updates like Sunday morning app notifications.",{"title":293,"searchDepth":294,"depth":294,"links":4050},[4051,4052,4053],{"id":4030,"depth":294,"text":4031},{"id":4037,"depth":294,"text":4038},{"id":4044,"depth":294,"text":4045},[300],{"content_references":4056,"triage":4059},[4057],{"type":312,"title":4058,"context":314},"Axios",{"relevance":4060,"novelty":320,"quality":320,"actionability":320,"composite":4061,"reasoning":4062},5,4.35,"Category: AI & LLMs. The article discusses a significant security breach related to an npm package that affects AI applications, emphasizing the importance of dependency management and supply chain security, which is crucial for product builders. It provides actionable advice on auditing dependencies and securing maintainers, making it highly relevant and practical for the target audience.","\u002Fsummaries\u002Ff817b802265235ad-north-korea-hit-axios-npm-maintainer-exposing-100m-summary","2026-05-04 14:47:50","2026-05-04 16:13:16",{"title":4020,"description":293},{"loc":4063},"f817b802265235ad","Level Up Coding","https:\u002F\u002Flevelup.gitconnected.com\u002Fi-clicked-an-app-update-on-sunday-morning-it-came-from-north-korea-8b1d97a10387?source=rss----5517fd7b58a6---4","summaries\u002Ff817b802265235ad-north-korea-hit-axios-npm-maintainer-exposing-100m-summary",[334,335],"OpenAI detected NK hackers, but they compromised Axios (100M weekly downloads) via fake job offer to maintainer Jason Saayman on Microsoft Teams—not OpenAI directly.",[],"Lsb2GRO9gS8keB1oz_oYt5jqvnSADQKkSgnlMpuuEIo",{"id":4077,"title":4078,"ai":4079,"body":4084,"categories":4141,"created_at":301,"date_modified":301,"description":4142,"extension":302,"faq":301,"featured":303,"kicker_label":301,"meta":4143,"navigation":323,"path":4144,"published_at":4145,"question":301,"scraped_at":4146,"seo":4147,"sitemap":4148,"source_id":4149,"source_name":4150,"source_type":4151,"source_url":4152,"stem":4153,"tags":4154,"thumbnail_url":301,"tldr":4156,"tweet":301,"unknown_tags":4157,"__hash__":4158},"summaries\u002Fsummaries\u002F83e85cee6b0e5f98-axios-npm-hack-deploys-rats-on-101m-dev-installs-summary.md","Axios NPM Hack Deploys RATs on 101M Dev Installs",{"provider":7,"model":8,"input_tokens":4080,"output_tokens":4081,"processing_time_ms":4082,"cost_usd":4083},4214,1531,14142,0.00131745,{"type":14,"value":4085,"toc":4135},[4086,4090,4097,4100,4104,4107,4110,4114,4117,4121],[17,4087,4089],{"id":4088},"backdoor-mechanics-exploit-post-install-scripts","Backdoor Mechanics Exploit Post-Install Scripts",[22,4091,4092,4093,4096],{},"Attackers hijacked the Axios NPM lead maintainer's account—despite 2FA and GitHub auth—using a long-lived NPM CLI access token (possibly via recovery codes) to publish v1.14.1 (tagged latest) and v0.30.4 (tagged legacy) on March 31. These versions added a phantom 'plain crypto-js' dependency, a tweaked crypto-js with a malicious post-install 'setup.js' script. This script runs automatically on every ",[26,4094,4095],{},"npm install"," or CI execution, detects the OS (Windows, macOS Intel\u002FApple Silicon, Linux), and fetches a tailored second-stage RAT payload from a remote server.",[22,4098,4099],{},"The RAT self-cleans: original setup.js deletes itself, removes the malicious package.json post-install entry, and restores a clean version to evade detection. Packages like DataDog, OpenClaw, and WordPress inherited the compromise, affecting Axios's 174,000 dependents and 101 million weekly installs.",[17,4101,4103],{"id":4102},"rat-behaviors-steal-dev-credentials-and-enable-remote-control","RAT Behaviors Steal Dev Credentials and Enable Remote Control",[22,4105,4106],{},"Once deployed, the RAT scans sensitive directories—Documents, Desktop, config folders (plus OneDrive, AppData, all drive letters on Windows)—exfiltrates the file list to attackers for theft assessment, then beacons every 60 seconds with hostname, username, OS, timezone, hardware model, and all running processes. This reveals active software and user presence.",[22,4108,4109],{},"Attackers can remotely issue four commands: (1) browse any directory, (2) execute arbitrary shell commands\u002Fscripts, (3) drop\u002Fexecute more malware, (4) kill the process for cleanup. Treat any infected system as fully compromised: rotate all secrets like .env files, NPM tokens, SSH keys immediately.",[17,4111,4113],{"id":4112},"detect-infection-and-respond-swiftly","Detect Infection and Respond Swiftly",[22,4115,4116],{},"Search lockfiles (package-lock.json, yarn.lock) for axios@1.14.1, axios@0.30.4, or plain-crypto-js. Scan node_modules for these packages. Hunt RAT artifacts per platform-specific write-ups (linked in source). Axios versions were yanked after 3 hours, but prior installs persist—assume credential theft.",[17,4118,4120],{"id":4119},"prevent-future-supply-chain-attacks","Prevent Future Supply Chain Attacks",[22,4122,4123,4124,4127,4128,4130,4131,4134],{},"Commit lockfiles to pin versions and use ",[26,4125,4126],{},"npm ci"," (not ",[26,4129,4095],{},") in CI\u002FCD to enforce exact installs. Set minimum package age (e.g., 48 hours) to skip fresh malicious uploads. Run ",[26,4132,4133],{},"npm install --ignore-scripts"," to block post-installs, or switch to Bun which disables them by default except on explicitly trusted deps. These steps caught this attack early but highlight rising NPM threats.",{"title":293,"searchDepth":294,"depth":294,"links":4136},[4137,4138,4139,4140],{"id":4088,"depth":294,"text":4089},{"id":4102,"depth":294,"text":4103},{"id":4112,"depth":294,"text":4113},{"id":4119,"depth":294,"text":4120},[300],"Attackers compromised the Axios npm package and published two backdoored releases. The malicious versions introduced a hidden post-install script that silently downloaded a Remote Access Trojan onto developer machines and CI\u002FCD runners, scanning for .env files, SSH keys, npm tokens and more. \n\n🔗 Relevant Links\nhttps:\u002F\u002Fwww.huntress.com\u002Fblog\u002Fsupply-chain-compromise-axios-npm-package\nhttps:\u002F\u002Fcloud.google.com\u002Fblog\u002Ftopics\u002Fthreat-intelligence\u002Fnorth-korea-threat-actor-targets-axios-npm-package\u002F\nhttps:\u002F\u002Fwww.youtube.com\u002Fredirect?event=video_description&redir_token=QUFFLUhqbHZlejk4T1JxOVdNWmhWQ05MTUxmdTRzb2dUUXxBQ3Jtc0ttbEQ5SkFtZWhBUWZsallOWDhaeXo5cTNKXzQ5Y0E2U09MQVFBT21kVGtJWjhybmdZTlFFMWZycy1NWnZVRlh5a0FLZ3hOVUluTUNLemlPYXdia2RWcGY5eUx4bFRMdnZxSzVUN1ZhelkzNnRBWWdjZw&q=https%3A%2F%2Fwww.stepsecurity.io%2Fblog%2Faxios-compromised-on-npm-malicious-versions-drop-remote-access-trojan&v=yiLIZLPNEm8\n\n❤️ More about us\nRadically better observability stack: https:\u002F\u002Fbetterstack.com\u002F\nWritten tutorials: https:\u002F\u002Fbetterstack.com\u002Fcommunity\u002F\nExample projects: https:\u002F\u002Fgithub.com\u002FBetterStackHQ\n\n📱 Socials\nTwitter: https:\u002F\u002Ftwitter.com\u002Fbetterstackhq\nInstagram: https:\u002F\u002Fwww.instagram.com\u002Fbetterstackhq\u002F\nTikTok: https:\u002F\u002Fwww.tiktok.com\u002F@betterstack\nLinkedIn: https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fbetterstack",{},"\u002Fsummaries\u002F83e85cee6b0e5f98-axios-npm-hack-deploys-rats-on-101m-dev-installs-summary","2026-04-01 03:45:00","2026-04-03 21:14:39",{"title":4078,"description":4142},{"loc":4144},"83e85cee6b0e5f98","Better Stack","video","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=5xWSezMFweE","summaries\u002F83e85cee6b0e5f98-axios-npm-hack-deploys-rats-on-101m-dev-installs-summary",[4155,334,335],"devops","North Korean-linked hackers compromised Axios maintainer account, releasing backdoored v1.14.1 (latest) and v0.30.4 (legacy) that install cross-OS RATs via phantom crypto-js dependency, targeting dev workstations and CI for credential theft.",[],"tQP4gE11qGqaB98Xh8-KbM3w7rjCxOU7P2pRYhL6dP0",{"id":4160,"title":4161,"ai":4162,"body":4167,"categories":4199,"created_at":301,"date_modified":301,"description":4200,"extension":302,"faq":301,"featured":303,"kicker_label":301,"meta":4201,"navigation":323,"path":4202,"published_at":4203,"question":301,"scraped_at":4204,"seo":4205,"sitemap":4206,"source_id":4207,"source_name":4208,"source_type":4151,"source_url":4209,"stem":4210,"tags":4211,"thumbnail_url":301,"tldr":4213,"tweet":301,"unknown_tags":4214,"__hash__":4215},"summaries\u002Fsummaries\u002F46ee9b4965eebef4-asm-js-predicted-js-s-demise-wasm-partially-delive-summary.md","Asm.js Predicted JS's Demise – Wasm Partially Delivers",{"provider":7,"model":8,"input_tokens":4163,"output_tokens":4164,"processing_time_ms":4165,"cost_usd":4166},5305,1615,15930,0.00184615,{"type":14,"value":4168,"toc":4194},[4169,4173,4180,4184,4187,4191],[17,4170,4172],{"id":4171},"asmjs-unlocks-high-performance-non-js-code-in-browsers","Asm.js Unlocks High-Performance Non-JS Code in Browsers",[22,4174,4175,4176,4179],{},"Asm.js, a strict typed subset of JavaScript acting as web assembly, allows compiling C\u002FC++ or other languages directly to browser-executable code. Every operation explicitly coerces types (e.g., ",[26,4177,4178],{},"function square(x) { x = +x; return x * x; }"," becomes a single mul instruction via JIT optimization). This enabled demos like Unreal Engine 3 running at playable frame rates (not 60 FPS) in Firefox in 2013, outperforming pure JS in Chrome. Bundles reached 3MB, feasible despite slower internet and VMs then, proving you could run complex apps like games without native JS. Gary Bernhardt demonstrated Chrome (compiled to Asm.js) running inside Firefox via Wine and X Windows shims, all from C – showing 'if it compiles to C, it runs in the browser.' The core claim: Asm.js lets developers ditch JS for preferred languages while still targeting JS engines, dooming JS dominance.",[17,4181,4183],{"id":4182},"_2025-prediction-massive-app-ports-fall-short-due-to-ai","2025 Prediction: Massive App Ports Fall Short Due to AI",[22,4185,4186],{},"Bernhardt predicted 2025 as peak Asm.js adoption with 'thick, extremely large applications' ported to it, frustrated developers fleeing JS pains (e.g., Brendan Eich's 10-day creation lore). Reality diverged: No massive war (as charted), but COVID and AI code generation eased JS frustrations, reducing migration urgency. Asm.js evolved into WebAssembly (Wasm), now at version 3.0 with garbage collection, better exceptions, JS string builtins, custom text annotations, and deterministic profiling – making it viable beyond early clunkiness.",[17,4188,4190],{"id":4189},"wasm-gains-traction-in-production-despite-js-persistence","Wasm Gains Traction in Production Despite JS Persistence",[22,4192,4193],{},"Wasm enables Rust, C++, Go (and experimentally Python) in Cloudflare Workers for serverless backends, bypassing JS. Notable apps like Figma use it. Hosting providers embrace it, hinting at Bernhardt's wild 'metal' vision: Embed JS VM in kernel for ring-0\u002F3 isolation, compiling all software to Asm\u002FWasm. While kernel-level remains far-fetched, Wasm's inroads validate the 'JS kills JS' thesis partially – blame AI for stalling full replacement by automating JS workarounds.",{"title":293,"searchDepth":294,"depth":294,"links":4195},[4196,4197,4198],{"id":4171,"depth":294,"text":4172},{"id":4182,"depth":294,"text":4183},{"id":4189,"depth":294,"text":4190},[300],"Birth and death: https:\u002F\u002Fwww.destroyallsoftware.com\u002Ftalks\u002Fthe-birth-and-death-of-javascript\n\nbecome an engineer, not just a slop cannon.  Check out https:\u002F\u002Fboot.dev\u002Fprime! And get 25% off. \n\nhttps:\u002F\u002Ftwitch.tv\u002FThePrimeagen - I Stream on Twitch\n\nhttps:\u002F\u002Ftwitter.com\u002Fterminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https:\u002F\u002Fboot.dev\u002Fprime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer.  \n\nGreat News?  Want me to research and create video????: https:\u002F\u002Fwww.reddit.com\u002Fr\u002FThePrimeagen\n\nKinesis Advantage 360: https:\u002F\u002Fbit.ly\u002FPrime-Kinesis",{},"\u002Fsummaries\u002F46ee9b4965eebef4-asm-js-predicted-js-s-demise-wasm-partially-delive-summary","2026-03-31 12:00:41","2026-04-03 21:18:26",{"title":4161,"description":4200},{"loc":4202},"46ee9b4965eebef4","The PrimeTime","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=ceH0IT-OBCw","summaries\u002F46ee9b4965eebef4-asm-js-predicted-js-s-demise-wasm-partially-delive-summary",[4212,335,336],"frontend","Gary Bernhardt's 2014 talk foresaw JavaScript killing itself via Asm.js, a typed subset enabling any language in browsers; Wasm advances this but AI code generation has delayed full adoption.",[336],"IKCDMlQrZE5eeyf2Lb7FKlX88Ham2VN4JOhuCDMQI6U"]