[{"data":1,"prerenderedAt":219},["ShallowReactive",2],{"i-ic:outline-arrow-upward":3,"Footer_afPiwGMwNiEyV4syWzw87ovzxHAgs4iwKtCn4zqBf8E":8,"episode-\u002Fpodcasts\u002Fbun":16,"i-material-symbols:ios-share":200,"i-material-symbols:home":202,"i-ic:baseline-play-circle-filled-white":204,"i-cbi:deezer-logo":206,"i-vscode-icons:file-type-rss":208,"Brand_dlIOZD2O03VXPoFYukMOJnSnZRMTmJ0YwMKY5fNK8":211,"github-sponsor":216,"i-ri:heart-3-fill":217},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,24,false,"\u003Cpath fill=\"currentColor\" d=\"m4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8z\"\u002F>",["Island",9],{"key":10,"result":11},"Footer_afPiwGMwNiEyV4syWzw87ovzxHAgs4iwKtCn4zqBf8E",{"head":12},{"style":13},[14],{"innerHTML":15},":where(.i-mdi\\:github){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url(\"data:image\u002Fsvg+xml,%3Csvg xmlns='http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 2A10 10 0 0 0 2 12c0 4.42 2.87 8.17 6.84 9.5c.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34c-.46-1.16-1.11-1.47-1.11-1.47c-.91-.62.07-.6.07-.6c1 .07 1.53 1.03 1.53 1.03c.87 1.52 2.34 1.07 2.91.83c.09-.65.35-1.09.63-1.34c-2.22-.25-4.55-1.11-4.55-4.92c0-1.11.38-2 1.03-2.71c-.1-.25-.45-1.29.1-2.64c0 0 .84-.27 2.75 1.02c.79-.22 1.65-.33 2.5-.33s1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02c.55 1.35.2 2.39.1 2.64c.65.71 1.03 1.6 1.03 2.71c0 3.82-2.34 4.66-4.57 4.91c.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0 0 12 2'\u002F%3E%3C\u002Fsvg%3E\")}",{"id":17,"title":18,"author":19,"body":20,"categories":175,"description":177,"dsSlug":178,"duration":179,"episodeArtwork":180,"episodeNumber":181,"episodeType":182,"explicit":6,"extension":183,"fileSize":184,"guid":185,"links":186,"meta":187,"navigation":188,"path":189,"publicationDate":190,"season":171,"seo":191,"status":192,"stem":193,"subtitle":194,"tags":195,"videoLink":198,"__hash__":199},"podcasts\u002Fpodcasts\u002F139.bun\u002Findex.md","BunJS, l'environement JS ultime ?","Double Slash",{"type":21,"value":22,"toc":169},"minimark",[23,32,38,72,77,84,95,99,106,159,166],[24,25,26,27,31],"p",{},"Dans cet épisode, on soulève le capot de Bun : historique du JS back-end (Node, Deno, Bun), JavaScriptCore vs V8, l’effet waouh du ",[28,29,30],"code",{},"bun install",", workspaces et catalogues monorepo, bundler + binaire CLI, tests natifs, modules intégrés (SQLite, Redis, images, markdown…) et la polémique Anthropic \u002F migration Rust. Pour qui c’est intéressant et pourquoi la DX compte autant que les performances.",[24,33,34],{},[35,36,37],"strong",{},"Liens utiles :",[39,40,41,51,58,65],"ul",{},[42,43,44,45],"li",{},"Site : ",[46,47,48],"a",{"href":48,"rel":49},"https:\u002F\u002Fbun.com",[50],"nofollow",[42,52,53,54],{},"Documentation : ",[46,55,56],{"href":56,"rel":57},"https:\u002F\u002Fbun.com\u002Fdocs",[50],[42,59,60,61],{},"Annonce 1.0 : ",[46,62,63],{"href":63,"rel":64},"https:\u002F\u002Fbun.com\u002Fblog\u002Fbun-v1.0",[50],[42,66,67,68],{},"Bun rejoint Anthropic : ",[46,69,70],{"href":70,"rel":71},"https:\u002F\u002Fbun.com\u002Fblog\u002Fbun-joins-anthropic",[50],[73,74,76],"h2",{"id":75},"un-peu-dhistoire","Un peu d'histoire",[24,78,79,80,83],{},"Jarred Sumner commence Bun en 2021, bloqué par un hot reload Next.js trop lent. Il porte d’abord le transpileur JSX \u002F TypeScript d’esbuild, puis embarque ",[35,81,82],{},"JavaScriptCore"," (le moteur de Safari) plutôt que V8, pour un démarrage plus rapide.",[24,85,86,87,90,91,94],{},"La preview publique, ",[35,88,89],{},"v0.1.0",", sort en juillet 2022 : runtime pensé comme drop-in de Node.js, bundler, transpileur, test runner et package manager. La ",[35,92,93],{},"1.0"," arrive en septembre 2023. En décembre 2025, Bun rejoint Anthropic ; le projet reste open source, licence MIT.",[73,96,98],{"id":97},"ce-que-bun-embarque","Ce que Bun embarque",[24,100,101,102,105],{},"D’après la doc officielle, ",[28,103,104],{},"bun"," est un seul binaire qui fait plusieurs métiers :",[39,107,108,132,141,150],{},[42,109,110,113,114,117,118,117,121,124,125,117,128,131],{},[35,111,112],{},"Runtime"," : exécute JS et TypeScript (et JSX) sans outil externe, compatible Node (",[28,115,116],{},"fs",", ",[28,119,120],{},"path",[28,122,123],{},"http","…) et APIs web (",[28,126,127],{},"fetch",[28,129,130],{},"WebSocket",").",[42,133,134,137,138,140],{},[35,135,136],{},"Package manager"," : ",[28,139,30],{},", jusqu’à 30× plus rapide que npm, avec cache global et workspaces.",[42,142,143,137,146,149],{},[35,144,145],{},"Tests",[28,147,148],{},"bun test",", compatible Jest, TypeScript en premier.",[42,151,152,137,155,158],{},[35,153,154],{},"Bundler",[28,156,157],{},"bun build"," pour le navigateur et le serveur.",[24,160,161,162,165],{},"Côté runtime, Bun ajoute aussi des modules natifs : SQLite (",[28,163,164],{},"bun:sqlite","), clients SQL (PostgreSQL, MySQL), Redis, et la compilation en binaire autonome.",[24,167,168],{},"Bonne écoute !",{"title":170,"searchDepth":171,"depth":171,"links":172},"",2,[173,174],{"id":75,"depth":171,"text":76},{"id":97,"depth":171,"text":98},[176],"Technology","Bun est un toolkit tout-en-un pour JavaScript et TypeScript: runtime, gestionnaire de paquets, test runner et bundler, dans un seul exécutable. Créé par Jarred Sumner, présenté publiquement en juillet 2022 puis stable avec la 1.0 de septembre 2023, il se pose en alternative plus rapide à Node.js. On revient sur son historique et ce qu’il embarque vraiment.","DS_139_bun",3768,"https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1789110154\u002Fepisode\u002FART_139_szimen.png",139,"full","md",60291205,null,[],{},true,"\u002Fpodcasts\u002Fbun","2026-09-11",{"title":18,"description":177},"published","podcasts\u002F139.bun\u002Findex","Runtime, bundler, tests et package manager — tout dans un seul binaire",[104,196,197],"javascript","backend","Wp0LvBiyK_M","NZv9c8AR9LNq-ESyuqF5_oc-Tpgvr2d8cBsRPcch4Hw",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":201},"\u003Cpath fill=\"currentColor\" d=\"M6 22q-.825 0-1.412-.587T4 20V10q0-.825.588-1.412T6 8h3v2H6v10h12V10h-3V8h3q.825 0 1.413.588T20 10v10q0 .825-.587 1.413T18 22zm5-6V4.825l-1.6 1.6L8 5l4-4l4 4l-1.4 1.425l-1.6-1.6V16z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":203},"\u003Cpath fill=\"currentColor\" d=\"M4 21V9l8-6l8 6v12h-6v-7h-4v7z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":205},"\u003Cpath fill=\"currentColor\" d=\"M12 2C6.475 2 2 6.475 2 12s4.475 10 10 10s10-4.475 10-10S17.525 2 12 2m-2 14.5v-9l6 4.5z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":207},"\u003Cpath fill=\"currentColor\" d=\"M18.774 5.051c.185-1.072.457-1.747.757-1.748c.561 0 1.015 2.341 1.015 5.228s-.455 5.229-1.016 5.229c-.23 0-.443-.4-.614-1.064c-.27 2.439-.831 4.115-1.48 4.115c-.5 0-.953-1.007-1.256-2.594c-.207 3.018-.727 5.161-1.334 5.161c-.381 0-.73-.848-.987-2.231C13.55 20 12.834 22 12 22s-1.551-2-1.86-4.853c-.255 1.383-.6 2.231-.986 2.231c-.609 0-1.128-2.142-1.335-5.161c-.3 1.587-.752 2.594-1.256 2.594c-.649 0-1.21-1.676-1.481-4.115c-.169.668-.382 1.064-.613 1.064c-.562 0-1.017-2.34-1.017-5.229S3.908 3.3 4.471 3.3c.3 0 .57.676.758 1.748C5.527 3.2 6.014 2 6.564 2c.653 0 1.219 1.7 1.487 4.168c.262-1.8.658-2.941 1.1-2.941c.624 0 1.154 2.252 1.351 5.393C10.874 7.01 11.41 6 12 6s1.128 1.011 1.5 2.62c.2-3.141.727-5.393 1.351-5.393c.444 0 .84 1.145 1.1 2.941C16.219 3.7 16.785 2 17.439 2c.547 0 1.035 1.2 1.335 3.051m-16.2 5.3C2.258 10.355 2 9.31 2 8.017s.258-2.337.576-2.337s.578 1.044.578 2.337s-.254 2.338-.578 2.338Zm18.848 0c-.32 0-.577-1.045-.577-2.338s.257-2.337.577-2.337S22 6.724 22 8.017s-.258 2.338-.576 2.338Z\"\u002F>",{"left":4,"top":4,"width":209,"height":209,"rotate":4,"vFlip":6,"hFlip":6,"body":210},32,"\u003Cdefs>\u003ClinearGradient id=\"SVGvSi4fdXe\" x1=\"30.06\" x2=\"225.94\" y1=\"30.06\" y2=\"225.94\" gradientTransform=\"matrix(.11 0 0 .11 2 2)\" gradientUnits=\"userSpaceOnUse\">\u003Cstop offset=\"0\" stop-color=\"#e3702d\"\u002F>\u003Cstop offset=\".11\" stop-color=\"#ea7d31\"\u002F>\u003Cstop offset=\".35\" stop-color=\"#f69537\"\u002F>\u003Cstop offset=\".5\" stop-color=\"#fb9e3a\"\u002F>\u003Cstop offset=\".7\" stop-color=\"#ea7c31\"\u002F>\u003Cstop offset=\".89\" stop-color=\"#de642b\"\u002F>\u003Cstop offset=\"1\" stop-color=\"#d95b29\"\u002F>\u003C\u002FlinearGradient>\u003C\u002Fdefs>\u003Crect width=\"28\" height=\"28\" x=\"2\" y=\"2\" fill=\"#cc5d15\" rx=\"6.01\" ry=\"6.01\"\u002F>\u003Crect width=\"26.91\" height=\"26.91\" x=\"2.54\" y=\"2.54\" fill=\"#f49c52\" rx=\"5.47\" ry=\"5.47\"\u002F>\u003Crect width=\"25.82\" height=\"25.82\" x=\"3.1\" y=\"3.1\" fill=\"url(#SVGvSi4fdXe)\" rx=\"5.14\" ry=\"5.14\"\u002F>\u003Cpath fill=\"#fff\" d=\"M6.82 6.16v3.83a15.31 15.31 0 0 1 15.3 15.3h3.83A19.14 19.14 0 0 0 6.81 6.17zm0 6.45v3.72a8.97 8.97 0 0 1 8.96 8.97h3.72A12.69 12.69 0 0 0 6.81 12.6zm2.62 7.44a2.63 2.63 0 0 0-2.63 2.62a2.63 2.63 0 0 0 2.63 2.63a2.63 2.63 0 0 0 2.63-2.63a2.63 2.63 0 0 0-2.63-2.63z\"\u002F>",["Island",212],{"key":213,"result":214},"Brand_dlIOZD2O03VXPoFYukMOJnSnZRMTmJ0YwMKY5fNK8",{"head":215},{},"{\"data\":{\"organization\":{\"sponsorsListing\":{\"name\":\"sponsors-double-slash-podcast\",\"fullDescriptionHTML\":\"\u003Cp>Le podcast des dev pour dev par des dev !\u003C\u002Fp>\\n\u003Cp>Des podcasts et des videos sur les technologie WEB modernes.\u003C\u002Fp>\\n\u003Cp>A deux ou avec un invité, on discute des tendances, des nouvelles technologies, des meilleures pratiques actuelles.\u003C\u002Fp>\\n\u003Cp>🎥 \u003Ca href=\\\"https:\u002F\u002Fwww.youtube.com\u002Fchannel\u002FUCp5DGBAX2XNJXeOVAo7bICQ\\\">Youtube\u003C\u002Fa>\u003Cbr>\\n🎙️ \u003Ca href=\\\"https:\u002F\u002Fspoti.fi\u002F317wtvD\\\">Spotify\u003C\u002Fa> ▪️ \u003Ca href=\\\"https:\u002F\u002Fapple.co\u002F3fTguFo\\\">Apple Podcast\u003C\u002Fa> ▪️ \u003Ca href=\\\"https:\u002F\u002Fbit.ly\u002F3i0hDgy\\\">Deezer\u003C\u002Fa> ▪️ \u003Ca href=\\\"https:\u002F\u002Fbit.ly\u002F31aKKYd\\\">Google Podcast\u003C\u002Fa>\u003Cbr>\\n🌐 \u003Ca href=\\\"https:\u002F\u002Fdouble-slash.dev\u002F\\\">Double Slash DEV\u003C\u002Fa>\u003C\u002Fp>\",\"url\":\"https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fdouble-slash-podcast\",\"shortDescription\":\"Le podcast des dev pour les dev par des dev !\",\"activeGoal\":{\"description\":\"L'ensemble des charges seront couvertes. Service de stockage et abonnement aux services utilisés.\",\"percentComplete\":48,\"targetValue\":70,\"title\":\"$70 per month\"},\"isPublic\":true,\"sponsorable\":{\"sponsors\":{\"edges\":[{\"node\":{\"id\":\"MDQ6VXNlcjEwMDMwNw==\",\"name\":\"Clément Delmas\",\"url\":\"https:\u002F\u002Fgithub.com\u002Fclem\",\"avatarUrl\":\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F100307?u=878ed4b7cdf920879b57046f19e434fea2c7d296&v=4\"}},{\"node\":{\"id\":\"MDQ6VXNlcjI3NTYwOQ==\",\"name\":\"Thibaud Lepretre\",\"url\":\"https:\u002F\u002Fgithub.com\u002Fkakawait\",\"avatarUrl\":\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F275609?v=4\"}},{\"node\":{\"id\":\"MDQ6VXNlcjE5MTQxNjA=\",\"name\":\"David Pollet\",\"url\":\"https:\u002F\u002Fgithub.com\u002Fdavidpollet\",\"avatarUrl\":\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1914160?u=4b3da16383b9fa810fd0980f756000709403ab45&v=4\"}},{\"node\":{\"id\":\"MDQ6VXNlcjYzMzMzOTY=\",\"name\":\"Eric\",\"url\":\"https:\u002F\u002Fgithub.com\u002Fericledonge\",\"avatarUrl\":\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6333396?u=e9e541a6b9125d8e8b558fdd914c847eb36db695&v=4\"}},{\"node\":{\"id\":\"MDQ6VXNlcjg4OTk3Njg=\",\"name\":\"François Gardien\",\"url\":\"https:\u002F\u002Fgithub.com\u002FYoutch\",\"avatarUrl\":\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F8899768?u=85ae8c4299c380bcec02e99e9364624f3ce333c7&v=4\"}},{\"node\":{\"id\":\"MDQ6VXNlcjEwMTg2OTkz\",\"name\":\"Adrien Zaganelli\",\"url\":\"https:\u002F\u002Fgithub.com\u002FadrienZ\",\"avatarUrl\":\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F10186993?u=08189ef8cf708a61445b6a57cf7a2aa361d484af&v=4\"}},{\"node\":{\"id\":\"MDQ6VXNlcjI2MTQyMzgz\",\"name\":\"Thomas Lemoine\",\"url\":\"https:\u002F\u002Fgithub.com\u002Fthomaslemoine\",\"avatarUrl\":\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F26142383?u=4c68175459b0ae1f8c68c48c40f2ae148747675d&v=4\"}},{\"node\":{\"id\":\"MDQ6VXNlcjY1NzM3MTMx\",\"name\":\"Valentin Grenier\",\"url\":\"https:\u002F\u002Fgithub.com\u002Fvalentin-grenier\",\"avatarUrl\":\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F65737131?u=0ba0cc828412f6655a948c6a82f69b9c909f8fd9&v=4\"}},{\"node\":{\"id\":\"U_kgDOBipZwA\",\"name\":\"Hebrard Frederic\",\"url\":\"https:\u002F\u002Fgithub.com\u002Ffrederichebrard\",\"avatarUrl\":\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F103438784?v=4\"}}]}}}}}}",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":218},"\u003Cpath fill=\"currentColor\" d=\"M16.5 3C19.538 3 22 5.5 22 9c0 7-7.5 11-10 12.5C9.5 20 2 16 2 9c0-3.5 2.5-6 5.5-6C9.36 3 11 4 12 5c1-1 2.64-2 4.5-2\"\u002F>",1789112865756]