[{"data":1,"prerenderedAt":2041},["ShallowReactive",2],{"lastOne":3,"last3":686,"Brand_MGiE2124NreQdi6M9K0OJouU5fhlpYiTp1rQiyE":1969,"Duration_MaheYdoKNBdXxDwVHc4tuelg3fYwH70Mvl1H9mi0gE":1974,"Duration_tm3uk3sCrY3zDdcBxcjsEJ987tav7Zo8c8InRUGfxM":1979,"Duration_Vev9dJUWGsTTGSg2IAAMw96CRzrlNXL15219JzktA8M":1984,"Duration_NJRa9zPyKrTUsIvLY8TgoviWv2AGa03uBfGEJ1BQVk4":1989,"i-ic:outline-arrow-upward":1994,"i-ic:baseline-play-circle-filled-white":1997,"i-material-symbols:home":1999,"i-mdi:arrow-right":2001,"i-mdi:github":2003,"i-cbi:deezer-logo":2005,"i-logos:youtube-icon":2007,"i-logos:bluesky":2011,"i-fa-brands:twitch":2014,"i-fa6-brands:square-x-twitter":2017,"Footer_afPiwGMwNiEyV4syWzw87ovzxHAgs4iwKtCn4zqBf8E":2020,"LastArticle_DmhppTmONOnDPrslrCE55LhowHggBX6xSbJaygY":2028,"i-vscode-icons:file-type-rss":2033,"Cohost_yohWxdEXgFpheBcSI1z7UA6L3KZhPCFuiSWAQ4MGYTo":2036},{"id":4,"title":5,"author":6,"body":7,"categories":659,"description":661,"dsSlug":662,"duration":663,"episodeArtwork":664,"episodeNumber":665,"episodeType":666,"explicit":667,"extension":668,"guid":669,"links":670,"meta":671,"navigation":672,"path":673,"publicationDate":674,"season":103,"seo":675,"status":676,"stem":677,"subtitle":678,"tags":679,"videoLink":684,"__hash__":685},"podcasts\u002Fpodcasts\u002F136.workflow\u002Findex.md","Workflow SDK, orchestrer des tâches asynchrones sans usine à gaz","Double Slash",{"type":8,"value":9,"toc":653},"minimark",[10,15,19,31,35,40,52,57,60,261,264,646,649],[11,12,14],"h2",{"id":13},"workflow-sdk-orchestrer-simplement-sans-réinventer-les-queues","Workflow SDK : orchestrer simplement sans réinventer les queues",[16,17,18],"p",{},"Comment enchaîner des étapes métier fiables : retry, pause, webhook, reprise après erreur. Sans monter une usine Kafka\u002FRedis à la main ?",[16,20,21,22,26,27,30],{},"Dans cet épisode, Alex partage son retour d’expérience sur ",[23,24,25],"strong",{},"Workflow"," (initié par Vercel, utilisable hors Vercel) : séquençage de tâches avec \"useWorkflow\" \u002F \"useStep\", sleeps en langage humain, observabilité, et le ",[23,28,29],{},"World"," qui abstrait runtime, queues et persistance. via Self-host ou le dashboard Vercel, des cas concrets (autorépondeurs, paniers abandonnés, agents).",[11,32,34],{"id":33},"workflow-sdk","Workflow SDK",[16,36,37,39],{},[23,38,34],{}," permet de transformer de simples fonctions TypeScript en processus fiables capables de durer dans le temps. Il gère automatiquement les interruptions, les reprises, les nouvelles tentatives en cas d’erreur, la conservation de l’état et le suivi de chaque étape. Cela facilite notamment la création d’automatisations, de traitements asynchrones et d’agents IA, sans avoir à mettre en place soi-même des files d’attente ou une infrastructure complexe.",[41,42,43],"ul",{},[44,45,46],"li",{},[47,48,49],"a",{"href":49,"rel":50},"https:\u002F\u002Fworkflow-sdk.dev",[51],"nofollow",[53,54,56],"h3",{"id":55},"code-exemple","Code exemple",[16,58,59],{},"On ajoute \"use workflow\" dans une fonction async",[61,62,67],"pre",{"className":63,"code":64,"language":65,"meta":66,"style":66},"language-js shiki shiki-themes synthwave-84","import { sleep } from \"workflow\";\nexport async function handleUserSignup(email: string) {\n  \"use workflow\";\n  const user = await createUser(email);\n  await sendWelcomeEmail(user);\n  await sleep(\"5s\"); \u002F\u002F Pause for 5s - doesn't consume any resources\n  await sendOnboardingEmail(user);\n  return { userId: user.id, status: \"onboarded\" };\n}\n","js","",[68,69,70,101,134,142,168,184,204,218,255],"code",{"__ignoreMap":66},[71,72,75,79,83,87,90,94,98],"span",{"class":73,"line":74},"line",1,[71,76,78],{"class":77},"sfE7D","import",[71,80,82],{"class":81},"soy-K"," { ",[71,84,86],{"class":85},"sqjNi","sleep",[71,88,89],{"class":81}," } ",[71,91,93],{"class":92},"scrqX","from",[71,95,97],{"class":96},"sFl1-"," \"workflow\"",[71,99,100],{"class":81},";\n",[71,102,104,107,110,113,117,120,124,127,131],{"class":73,"line":103},2,[71,105,106],{"class":77},"export",[71,108,109],{"class":92}," async",[71,111,112],{"class":92}," function",[71,114,116],{"class":115},"sgRlq"," handleUserSignup",[71,118,119],{"class":81},"(",[71,121,123],{"class":122},"sH7Js","email",[71,125,126],{"class":92},":",[71,128,130],{"class":129},"sRQ1T"," string",[71,132,133],{"class":81},") {\n",[71,135,137,140],{"class":73,"line":136},3,[71,138,139],{"class":96},"  \"use workflow\"",[71,141,100],{"class":81},[71,143,145,148,151,155,158,161,163,165],{"class":73,"line":144},4,[71,146,147],{"class":92},"  const",[71,149,150],{"class":85}," user",[71,152,154],{"class":153},"sW278"," =",[71,156,157],{"class":92}," await",[71,159,160],{"class":115}," createUser",[71,162,119],{"class":81},[71,164,123],{"class":85},[71,166,167],{"class":81},");\n",[71,169,171,174,177,179,182],{"class":73,"line":170},5,[71,172,173],{"class":92},"  await",[71,175,176],{"class":115}," sendWelcomeEmail",[71,178,119],{"class":81},[71,180,181],{"class":85},"user",[71,183,167],{"class":81},[71,185,187,189,192,194,197,200],{"class":73,"line":186},6,[71,188,173],{"class":92},[71,190,191],{"class":115}," sleep",[71,193,119],{"class":81},[71,195,196],{"class":96},"\"5s\"",[71,198,199],{"class":81},"); ",[71,201,203],{"class":202},"sjThu","\u002F\u002F Pause for 5s - doesn't consume any resources\n",[71,205,207,209,212,214,216],{"class":73,"line":206},7,[71,208,173],{"class":92},[71,210,211],{"class":115}," sendOnboardingEmail",[71,213,119],{"class":81},[71,215,181],{"class":85},[71,217,167],{"class":81},[71,219,221,224,226,229,232,234,237,241,244,247,249,252],{"class":73,"line":220},8,[71,222,223],{"class":92},"  return",[71,225,82],{"class":81},[71,227,228],{"class":85},"userId",[71,230,126],{"class":231},"s2hdG",[71,233,150],{"class":85},[71,235,236],{"class":81},".",[71,238,240],{"class":239},"sz5MA","id",[71,242,243],{"class":81},", ",[71,245,246],{"class":85},"status",[71,248,126],{"class":231},[71,250,251],{"class":96}," \"onboarded\"",[71,253,254],{"class":81}," };\n",[71,256,258],{"class":73,"line":257},9,[71,259,260],{"class":81},"}\n",[16,262,263],{},"Dans les fonctions qui font partie du workflow, on ajoute « use step » pour les rendre gérables par le workflow.",[61,265,269],{"className":266,"code":267,"language":268,"meta":66,"style":66},"language-ts shiki shiki-themes synthwave-84","import { FatalError } from \"workflow\"\n\u002F\u002F Our workflow function defined earlier\nasync function createUser(email: string) {\n  \"use step\";\n  console.log(`Creating user with email: ${email}`);\n  \u002F\u002F Full Node.js access - database calls, APIs, etc.\n  return { id: crypto.randomUUID(), email };\n}\nasync function sendWelcomeEmail(user: { id: string; email: string; }) {\n  \"use step\";\n  console.log(`Sending welcome email to user: ${user.id}`);\n  if (Math.random() \u003C 0.3) {\n  \u002F\u002F By default, steps will be retried for unhandled errors\n   throw new Error(\"Retryable!\");\n  }\n}\nasync function sendOnboardingEmail(user: { id: string; email: string}) {\n  \"use step\";\n  if (!user.email.includes(\"@\")) {\n    \u002F\u002F To skip retrying, throw a FatalError instead\n    throw new FatalError(\"Invalid Email\");\n  }\n  console.log(`Sending onboarding email to user: ${user.id}`);\n}\n","ts",[68,270,271,287,292,311,318,346,351,376,380,414,421,449,478,484,503,509,514,548,555,584,590,608,613,641],{"__ignoreMap":66},[71,272,273,275,277,280,282,284],{"class":73,"line":74},[71,274,78],{"class":92},[71,276,82],{"class":81},[71,278,279],{"class":85},"FatalError",[71,281,89],{"class":81},[71,283,93],{"class":92},[71,285,286],{"class":96}," \"workflow\"\n",[71,288,289],{"class":73,"line":103},[71,290,291],{"class":202},"\u002F\u002F Our workflow function defined earlier\n",[71,293,294,297,299,301,303,305,307,309],{"class":73,"line":136},[71,295,296],{"class":92},"async",[71,298,112],{"class":92},[71,300,160],{"class":115},[71,302,119],{"class":81},[71,304,123],{"class":122},[71,306,126],{"class":92},[71,308,130],{"class":129},[71,310,133],{"class":81},[71,312,313,316],{"class":73,"line":144},[71,314,315],{"class":96},"  \"use step\"",[71,317,100],{"class":81},[71,319,320,323,325,328,330,333,336,338,341,344],{"class":73,"line":170},[71,321,322],{"class":85},"  console",[71,324,236],{"class":81},[71,326,327],{"class":115},"log",[71,329,119],{"class":81},[71,331,332],{"class":96},"`Creating user with email: ",[71,334,335],{"class":77},"${",[71,337,123],{"class":85},[71,339,340],{"class":77},"}",[71,342,343],{"class":96},"`",[71,345,167],{"class":81},[71,347,348],{"class":73,"line":186},[71,349,350],{"class":202},"  \u002F\u002F Full Node.js access - database calls, APIs, etc.\n",[71,352,353,355,357,359,361,364,366,369,372,374],{"class":73,"line":206},[71,354,223],{"class":92},[71,356,82],{"class":81},[71,358,240],{"class":85},[71,360,126],{"class":231},[71,362,363],{"class":85}," crypto",[71,365,236],{"class":81},[71,367,368],{"class":115},"randomUUID",[71,370,371],{"class":81},"(), ",[71,373,123],{"class":85},[71,375,254],{"class":81},[71,377,378],{"class":73,"line":220},[71,379,260],{"class":81},[71,381,382,384,386,388,390,392,394,396,398,400,402,405,407,409,411],{"class":73,"line":257},[71,383,296],{"class":92},[71,385,112],{"class":92},[71,387,176],{"class":115},[71,389,119],{"class":81},[71,391,181],{"class":122},[71,393,126],{"class":92},[71,395,82],{"class":81},[71,397,240],{"class":85},[71,399,126],{"class":92},[71,401,130],{"class":129},[71,403,404],{"class":81},"; ",[71,406,123],{"class":85},[71,408,126],{"class":92},[71,410,130],{"class":129},[71,412,413],{"class":81},"; }) {\n",[71,415,417,419],{"class":73,"line":416},10,[71,418,315],{"class":96},[71,420,100],{"class":81},[71,422,424,426,428,430,432,435,437,439,441,443,445,447],{"class":73,"line":423},11,[71,425,322],{"class":85},[71,427,236],{"class":81},[71,429,327],{"class":115},[71,431,119],{"class":81},[71,433,434],{"class":96},"`Sending welcome email to user: ",[71,436,335],{"class":77},[71,438,181],{"class":85},[71,440,236],{"class":231},[71,442,240],{"class":85},[71,444,340],{"class":77},[71,446,343],{"class":96},[71,448,167],{"class":81},[71,450,452,455,458,461,463,466,469,472,476],{"class":73,"line":451},12,[71,453,454],{"class":92},"  if",[71,456,457],{"class":81}," (",[71,459,460],{"class":85},"Math",[71,462,236],{"class":81},[71,464,465],{"class":115},"random",[71,467,468],{"class":81},"() ",[71,470,471],{"class":92},"\u003C",[71,473,475],{"class":474},"sSmKr"," 0.3",[71,477,133],{"class":81},[71,479,481],{"class":73,"line":480},13,[71,482,483],{"class":202},"  \u002F\u002F By default, steps will be retried for unhandled errors\n",[71,485,487,490,493,496,498,501],{"class":73,"line":486},14,[71,488,489],{"class":92},"   throw",[71,491,492],{"class":92}," new",[71,494,495],{"class":115}," Error",[71,497,119],{"class":81},[71,499,500],{"class":96},"\"Retryable!\"",[71,502,167],{"class":81},[71,504,506],{"class":73,"line":505},15,[71,507,508],{"class":81},"  }\n",[71,510,512],{"class":73,"line":511},16,[71,513,260],{"class":81},[71,515,517,519,521,523,525,527,529,531,533,535,537,539,541,543,545],{"class":73,"line":516},17,[71,518,296],{"class":92},[71,520,112],{"class":92},[71,522,211],{"class":115},[71,524,119],{"class":81},[71,526,181],{"class":122},[71,528,126],{"class":92},[71,530,82],{"class":81},[71,532,240],{"class":85},[71,534,126],{"class":92},[71,536,130],{"class":129},[71,538,404],{"class":81},[71,540,123],{"class":85},[71,542,126],{"class":92},[71,544,130],{"class":129},[71,546,547],{"class":81},"}) {\n",[71,549,551,553],{"class":73,"line":550},18,[71,552,315],{"class":96},[71,554,100],{"class":81},[71,556,558,560,562,565,567,569,571,573,576,578,581],{"class":73,"line":557},19,[71,559,454],{"class":92},[71,561,457],{"class":81},[71,563,564],{"class":92},"!",[71,566,181],{"class":85},[71,568,236],{"class":81},[71,570,123],{"class":85},[71,572,236],{"class":81},[71,574,575],{"class":115},"includes",[71,577,119],{"class":81},[71,579,580],{"class":96},"\"@\"",[71,582,583],{"class":81},")) {\n",[71,585,587],{"class":73,"line":586},20,[71,588,589],{"class":202},"    \u002F\u002F To skip retrying, throw a FatalError instead\n",[71,591,593,596,598,601,603,606],{"class":73,"line":592},21,[71,594,595],{"class":92},"    throw",[71,597,492],{"class":92},[71,599,600],{"class":115}," FatalError",[71,602,119],{"class":81},[71,604,605],{"class":96},"\"Invalid Email\"",[71,607,167],{"class":81},[71,609,611],{"class":73,"line":610},22,[71,612,508],{"class":81},[71,614,616,618,620,622,624,627,629,631,633,635,637,639],{"class":73,"line":615},23,[71,617,322],{"class":85},[71,619,236],{"class":81},[71,621,327],{"class":115},[71,623,119],{"class":81},[71,625,626],{"class":96},"`Sending onboarding email to user: ",[71,628,335],{"class":77},[71,630,181],{"class":85},[71,632,236],{"class":231},[71,634,240],{"class":85},[71,636,340],{"class":77},[71,638,343],{"class":96},[71,640,167],{"class":81},[71,642,644],{"class":73,"line":643},24,[71,645,260],{"class":81},[16,647,648],{},"Bonne écoute !",[650,651,652],"style",{},"html pre.shiki code .sfE7D, html code.shiki .sfE7D{--shiki-default:#72F1B8}html pre.shiki code .soy-K, html code.shiki .soy-K{--shiki-default:#BBBBBB}html pre.shiki code .sqjNi, html code.shiki .sqjNi{--shiki-default:#FF7EDB}html pre.shiki code .scrqX, html code.shiki .scrqX{--shiki-default:#FEDE5D}html pre.shiki code .sFl1-, html code.shiki .sFl1-{--shiki-default:#FF8B39}html pre.shiki code .sgRlq, html code.shiki .sgRlq{--shiki-default:#36F9F6}html pre.shiki code .sH7Js, html code.shiki .sH7Js{--shiki-default:#FF7EDB;--shiki-default-font-style:italic}html pre.shiki code .sRQ1T, html code.shiki .sRQ1T{--shiki-default:#FE4450}html pre.shiki code .sW278, html code.shiki .sW278{--shiki-default:#FFFFFFEE}html pre.shiki code .sjThu, html code.shiki .sjThu{--shiki-default:#848BBD;--shiki-default-font-style:italic}html pre.shiki code .s2hdG, html code.shiki .s2hdG{--shiki-default:#B6B1B1}html pre.shiki code .sz5MA, html code.shiki .sz5MA{--shiki-default:#2EE2FA}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sSmKr, html code.shiki .sSmKr{--shiki-default:#F97E72}",{"title":66,"searchDepth":103,"depth":103,"links":654},[655,656],{"id":13,"depth":103,"text":14},{"id":33,"depth":103,"text":34,"children":657},[658],{"id":55,"depth":136,"text":56},[660],"Technology","Présentation de Workflow SDK, la librairie Vercel pour orchestrer simplement des tâches asynchrones en JavaScript\u002FTypeScript, avec retries, pauses, webhooks, actions humaines et observabilité, en partageant son retour d’expérience et des cas concrets.","DS_136_workflow","2 627","https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1784274696\u002Fepisode\u002FART_136_zvafgr.png",136,"full",false,"md",null,[],{},true,"\u002Fpodcasts\u002Fworkflow","2026-07-17",{"title":5,"description":661},"published","podcasts\u002F136.workflow\u002Findex","Un processus intelligent ?",[680,681,682,683],"workflow","javascript","queue","vercel","r8gtqImnrCk","KSvEe86uXNDdfDNZeuH0Dn9HV2h4d_p3716Gltitieg",[687,1272,1653],{"id":688,"title":689,"author":6,"body":690,"categories":1243,"description":1244,"dsSlug":1245,"duration":669,"episodeArtwork":1246,"episodeNumber":1247,"episodeType":666,"explicit":667,"extension":668,"guid":669,"links":1248,"meta":1249,"navigation":672,"path":1250,"publicationDate":1251,"season":103,"seo":1252,"status":676,"stem":1253,"subtitle":1254,"tags":1255,"videoLink":1270,"__hash__":1271},"podcasts\u002Fpodcasts\u002F135.news-jul26\u002Findex.md","News Juillet 2026, TypeScript 7 RC, Astro 7 et des pièges pour agents IA",{"type":8,"value":691,"toc":1225},[692,696,702,717,721,727,738,745,749,755,765,768,791,794,798,804,813,839,842,846,852,859,862,869,873,879,890,894,900,907,911,917,924,928,934,941,947,951,957,972,990,994,1000,1007,1010,1016,1020,1026,1036,1040,1046,1060,1063,1067,1073,1082,1110,1113,1139,1146,1150,1156,1168,1171,1207,1210,1214,1220],[11,693,695],{"id":694},"mitchell-hashimoto-et-les-pièges-à-agents","Mitchell Hashimoto et les pièges à agents",[16,697,698],{},[47,699,700],{"href":700,"rel":701},"https:\u002F\u002Fx.com\u002Fmitchellh\u002Fstatus\u002F2067970516951150721",[51],[16,703,704,705,708,709,712,713,716],{},"Mitchell Hashimoto (créateur de HashiCorp) partage une astuce pour détecter les agents IA qui ne relisent pas leur code : il ",[23,706,707],{},"empoisonne"," ses fichiers ",[68,710,711],{},"AGENTS.md"," et commentaires de code avec des ",[23,714,715],{},"prompt injections"," pour piéger ceux qui envoient du code non relu à un humain. Résultat : détection immédiate et bannissement. Une méthode radicale pour garantir la qualité des contributions.",[11,718,720],{"id":719},"typescript-70-rc","TypeScript 7.0 RC",[16,722,723],{},[47,724,725],{"href":725,"rel":726},"https:\u002F\u002Fdevblogs.microsoft.com\u002Ftypescript\u002Fannouncing-typescript-7-0-rc\u002F",[51],[16,728,729,730,733,734,737],{},"Microsoft annonce la ",[23,731,732],{},"Release Candidate de TypeScript 7.0",", une version majeure construite sur une nouvelle base en Go. Cette version est ",[23,735,736],{},"jusqu'à 10 fois plus rapide"," que TypeScript 6.0, tout en conservant une compatibilité totale avec les projets existants.",[16,739,740,741,744],{},"TypeScript 7.0 introduit également des améliorations comme la parallélisation du type-checking, un mode ",[68,742,743],{},"--watch"," repensé, et des changements de comportement pour aligner JavaScript et TypeScript. La version stable est attendue dans le mois.",[11,746,748],{"id":747},"astro-70","Astro 7.0",[16,750,751],{},[47,752,753],{"href":753,"rel":754},"https:\u002F\u002Fastro.build\u002Fblog\u002Fastro-7\u002F",[51],[16,756,757,758,761,762,236],{},"Astro 7.0 est là, avec des ",[23,759,760],{},"builds jusqu'à 61 % plus rapides"," grâce à un compilateur Rust, un pipeline Markdown\u002FMDX optimisé, et Vite 8 avec son nouveau bundler ",[23,763,764],{},"Rolldown",[16,766,767],{},"Cette version introduit aussi :",[41,769,770,779,785],{},[44,771,772,775,776,236],{},[23,773,774],{},"Advanced Routing"," : Contrôle total du pipeline de requêtes via ",[68,777,778],{},"src\u002Ffetch.ts",[44,780,781,784],{},[23,782,783],{},"Route Caching"," : Cache CDN pour Netlify, Vercel et Cloudflare (bêta privée).",[44,786,787,790],{},[23,788,789],{},"Améliorations IA"," : Serveur de développement en arrière-plan et logs JSON pour les agents de codage.",[16,792,793],{},"Astro 7.0 est conçu pour les workflows modernes, y compris l'intégration avec les agents IA.",[11,795,797],{"id":796},"sätteri","Sätteri",[16,799,800],{},[47,801,802],{"href":802,"rel":803},"https:\u002F\u002Fsatteri.bruits.org",[51],[16,805,806,808,809,812],{},[23,807,797],{}," est un moteur de traitement ",[23,810,811],{},"Markdown\u002FMDX ultra-rapide écrit en Rust",", combiné à une API flexible en JavaScript pour les plugins. Il offre le meilleur des deux mondes : la performance du Rust et l'extensibilité de l'écosystème JS.",[41,814,815,821,827,833],{},[44,816,817,820],{},[23,818,819],{},"~8 700 documents\u002Fseconde"," (benchmark sur machine standard).",[44,822,823,826],{},[23,824,825],{},"Compatibilité"," : CommonMark, GFM, MDX, et extensions personnalisées.",[44,828,829,832],{},[23,830,831],{},"Plugins"," : Architecture modulaire pour ajouter des fonctionnalités (math, directives, etc.).",[44,834,835,838],{},[23,836,837],{},"WASM"," : Fonctionne dans le navigateur ou en Node.js.",[16,840,841],{},"Sätteri est le moteur utilisé par Astro 7 pour son pipeline Markdown\u002FMDX par défaut.",[11,843,845],{"id":844},"cursor-ios","Cursor iOS",[16,847,848],{},[47,849,850],{"href":850,"rel":851},"https:\u002F\u002Fcursor.com\u002Fblog\u002Fios-mobile-app",[51],[16,853,854,855,858],{},"Cursor lance son ",[23,856,857],{},"application mobile iOS",", permettant de coder en mobilité avec une réduction de 75 % sur la consommation de tokens. Idéal pour développer en déplacement.",[16,860,861],{},"Retour d’expérience perso : 5 heures de route (voiture en passager), mobile only, et une grosse fonctionnalité\u002Fservice en sortie.",[16,863,864,865],{},"Pour souscrire à cursor (lien affilié) : ",[47,866,867],{"href":867,"rel":868},"https:\u002F\u002Fcursor.com\u002Freferral?code=B1WRHVRW4SCM",[51],[11,870,872],{"id":871},"docker-chez-vercel","Docker chez Vercel !",[16,874,875],{},[47,876,877],{"href":877,"rel":878},"https:\u002F\u002Fvercel.com\u002Fblog\u002Fdockerfile-on-vercel",[51],[16,880,881,882,885,886,889],{},"Vercel permet désormais d’exécuter ",[23,883,884],{},"n’importe quel serveur HTTP directement depuis un Dockerfile",". Ajoutez un fichier ",[68,887,888],{},"Dockerfile.vercel"," à votre projet, et Vercel construit, stocke, déploie et met à l’échelle automatiquement l’image sur Fluid Compute, avec une tarification basée sur l’utilisation réelle du CPU. Idéal pour les apps Rails, Django, Spring Boot, Go, ou tout autre serveur HTTP.",[11,891,893],{"id":892},"deno-desktop-créez-des-applications-de-bureau-avec-deno","Deno Desktop : Créez des applications de bureau avec Deno",[16,895,896],{},[47,897,898],{"href":898,"rel":899},"https:\u002F\u002Fdocs.deno.com\u002Fruntime\u002Fdesktop\u002F",[51],[16,901,902,903,906],{},"Deno 2.9 introduit ",[68,904,905],{},"deno desktop",", un outil pour transformer un projet Deno (fichier TypeScript, Next.js, Astro, etc.) en une application de bureau autonome. Il propose une détection automatique des frameworks, un rechargement à chaud, des liaisons en processus pour une communication fluide entre le backend et l'interface, ainsi qu'un système de mise à jour automatique par diff binaire.",[11,908,910],{"id":909},"babel-800-esm-only-fin-du-support-es5-par-défaut-et-migration-fluide","Babel 8.0.0 : ESM-only, fin du support ES5 par défaut et migration fluide",[16,912,913],{},[47,914,915],{"href":915,"rel":916},"https:\u002F\u002Fbabeljs.io\u002Fblog\u002F2026\u002F06\u002F16\u002F8.0.0\u002F",[51],[16,918,919,920,923],{},"Babel 8.0.0 est enfin sorti après 8 ans sans version majeure. Cette mise à jour modernise Babel en le rendant ",[23,921,922],{},"ESM-only",", en arrêtant la compilation par défaut vers ES5 (désormais basée sur les navigateurs modernes via Browserslist), et en intégrant des types TypeScript pour tous ses packages. Babel 8 nécessite Node.js 22+ et vise à simplifier la migration pour les utilisateurs.",[11,925,927],{"id":926},"introducing-eve","Introducing eve",[16,929,930],{},[47,931,932],{"href":932,"rel":933},"https:\u002F\u002Fvercel.com\u002Fblog\u002Fintroducing-eve",[51],[16,935,936,937,940],{},"Vercel introduit ",[23,938,939],{},"eve",", un framework open-source pour construire, exécuter et scalabiliser des agents en production. Eve simplifie le développement d'agents en fournissant des fonctionnalités intégrées comme l'exécution durable, le sandboxing, les approbations humaines, les sous-agents, le traçage et les évaluations. Le framework est conçu pour éviter de réinventer la roue à chaque projet, tout comme Next.js l'a fait pour le web.",[16,942,943],{},[47,944,945],{"href":945,"rel":946},"https:\u002F\u002Fwww.openui.com\u002Fdocs\u002Fopenui-lang\u002Fexamples\u002Fharnesses\u002Fvercel-eve",[51],[11,948,950],{"id":949},"sakana-fugu","Sakana Fugu",[16,952,953],{},[47,954,955],{"href":955,"rel":956},"https:\u002F\u002Fsakana.ai\u002Ffugu-release\u002F",[51],[16,958,959,960,963,964,967,968,971],{},"Sakana AI lance ",[23,961,962],{},"Fugu"," et ",[23,965,966],{},"Fugu Ultra",", une famille de modèles basés sur une ",[23,969,970],{},"orchestration multi-agents autonome",". Fugu agit comme un seul modèle API, mais coordonne dynamiquement les meilleurs modèles du monde pour résoudre des tâches complexes en plusieurs étapes.",[16,973,974,975,963,978,981,982,985,986],{},"Fugu Ultra rivalise avec des modèles comme ",[23,976,977],{},"Fable 5",[23,979,980],{},"Mythos Preview"," sur des benchmarks exigeants en ingénierie, raisonnement et sciences, tout en évitant les risques liés aux contrôles d'exportation. Le système est conçu pour offrir une ",[23,983,984],{},"souveraineté IA",", en permettant de contourner les restrictions d'accès d'un fournisseur unique.\n",[47,987,988],{"href":988,"rel":989},"https:\u002F\u002Fwww.usine-digitale.fr\u002Fintelligence-artificielle\u002Fia-generative\u002Ffugu-ultra-ce-modele-dia-de-pointe-venu-du-japon-qui-atteindrait-des-performances-dignes-de-claude-mythos-5-en-orchestrant-dautres-modeles-de-facon-autonome.BMZ3SVCHV5FVHNRJ3ZW4O4K44M.html",[51],[11,991,993],{"id":992},"ornith-10","Ornith 1.0",[16,995,996],{},[47,997,998],{"href":998,"rel":999},"https:\u002F\u002Fdeep-reinforce.com\u002Fornith_1_0.html",[51],[16,1001,1002,1003,1006],{},"Deep Reinforce introduit ",[23,1004,1005],{},"Ornith-1.0",", une famille de modèles open-source auto-améliorants spécialement conçus pour les tâches de codage agentique. Disponible en plusieurs tailles (9B Dense, 31B Dense, 35B MoE, 397B MoE), Ornith-1.0 atteint des performances de pointe sur divers benchmarks de codage, rivalisant avec des modèles comme Claude Opus 4.7.",[16,1008,1009],{},"Le framework d'entraînement auto-améliorant permet aux modèles d'optimiser conjointement les solutions et les structures qui les guident, offrant ainsi des gains de capacité durables sans conception manuelle de harnais.",[16,1011,1012],{},[47,1013,1014],{"href":1014,"rel":1015},"https:\u002F\u002Fgoodtech.info\u002Fdeepreinforce-ornith-llm-open-source-code-agentique\u002F",[51],[11,1017,1019],{"id":1018},"mistral-ocr-4","Mistral OCR 4",[16,1021,1022],{},[47,1023,1024],{"href":1024,"rel":1025},"https:\u002F\u002Fmistral.ai\u002Fnews\u002Focr-4\u002F",[51],[16,1027,1028,1029,1031,1032,1035],{},"Mistral annonce la sortie de ",[23,1030,1019],{},", un modèle de reconnaissance optique de caractères (OCR) de pointe pour l'intelligence documentaire. Il prend en charge ",[23,1033,1034],{},"170 langues",", offre des boîtes englobantes, une classification des blocs et des scores de confiance intégrés, et peut être déployé en auto-hébergement. Idéal pour les workflows RAG, les agents et les pipelines de données structurées.",[11,1037,1039],{"id":1038},"firecrawl-keyless","Firecrawl Keyless",[16,1041,1042],{},[47,1043,1044],{"href":1044,"rel":1045},"https:\u002F\u002Fwww.firecrawl.dev\u002Fblog\u002Ffirecrawl-keyless-launch",[51],[16,1047,1048,1049,1051,1052,1055,1056,1059],{},"Firecrawl lance ",[23,1050,1039],{},", une solution pour rechercher, scraper et interagir avec le web ",[23,1053,1054],{},"sans clé API",". Chaque développeur bénéficie de ",[23,1057,1058],{},"1 000 crédits gratuits par mois",", automatiquement.",[16,1061,1062],{},"Avec Firecrawl Keyless, vous pouvez rechercher des résultats en direct, scraper n'importe quelle URL pour obtenir du markdown propre, et interagir avec des pages dynamiques. Disponible via MCP, CLI et API.",[11,1064,1066],{"id":1065},"lighton","LightOn",[16,1068,1069],{},[47,1070,1071],{"href":1071,"rel":1072},"https:\u002F\u002Flighton.ai",[51],[16,1074,1075,1077,1078,1081],{},[23,1076,1066],{}," est une plateforme d'",[23,1079,1080],{},"OCR et de retrieval avancé"," pour les documents, conçue pour les workflows IA en production. Elle propose trois endpoints clés :",[41,1083,1084,1094,1100],{},[44,1085,1086,1089,1090,1093],{},[23,1087,1088],{},"\u002Fparse"," : Extraction de texte structuré (PDF, images, tableaux, écriture manuscrite) avec ",[23,1091,1092],{},"LightOnOCR-2"," (SOTA sur OLMOCR-Bench).",[44,1095,1096,1099],{},[23,1097,1098],{},"\u002Fextract"," : Récupération de champs spécifiques (numéros de facture, dates, etc.) en JSON structuré.",[44,1101,1102,1105,1106,1109],{},[23,1103,1104],{},"\u002Fsearch"," : Recherche hybride (dense + sparse + late-interaction) avec ",[23,1107,1108],{},"citations précises"," et contrôle d'accès au niveau des chunks.",[16,1111,1112],{},"Points forts :",[41,1114,1115,1121,1127,1133],{},[44,1116,1117,1120],{},[23,1118,1119],{},"Modèles open-source"," (LateOn, NextPlaid, PyLate, DenseOn) en production.",[44,1122,1123,1126],{},[23,1124,1125],{},"MCP-native"," : Intégration directe avec les agents via Model Context Protocol.",[44,1128,1129,1132],{},[23,1130,1131],{},"Gouvernance"," : Workspaces isolés, ACLs au niveau des chunks, et conformité RGPD\u002FSOC 2.",[44,1134,1135,1138],{},[23,1136,1137],{},"Tarification transparente"," : Gratuite pour démarrer, puis à l'usage.",[16,1140,1141,1142,1145],{},"Idéal pour les applications nécessitant une ",[23,1143,1144],{},"recherche fiable, auditable et sécurisée"," sur des corpus documentaires.",[11,1147,1149],{"id":1148},"linkup","Linkup",[16,1151,1152],{},[47,1153,1154],{"href":1154,"rel":1155},"https:\u002F\u002Fwww.linkup.so",[51],[16,1157,1158,1160,1161,1164,1165,236],{},[23,1159,1149],{}," est une ",[23,1162,1163],{},"API de recherche web de grade production"," pour l'IA, utilisée par McKinsey, SNCF, Cohere, Legora, Polymarket et Artisan AI. ",[23,1166,1167],{},"#1 sur le benchmark SimpleQA d'OpenAI",[16,1169,1170],{},"Fonctionnalités :",[41,1172,1173,1179,1185,1195,1201],{},[44,1174,1175,1178],{},[23,1176,1177],{},"Recherche web optimisée pour l'IA"," : Réponses sourcées et citées, avec extraits complets.",[44,1180,1181,1184],{},[23,1182,1183],{},"Index privé"," : Créez un index dédié pour vos données propriétaires, avec contrôle d'accès.",[44,1186,1187,1190,1191,1194],{},[23,1188,1189],{},"Déploiement flexible"," : Cloud managé ou ",[23,1192,1193],{},"Bring Your Own Cloud"," (BYOC) pour une conformité maximale.",[44,1196,1197,1200],{},[23,1198,1199],{},"Intégrations"," : Compatible avec OpenAI SDK, LangChain, CrewAI, et bien d'autres.",[44,1202,1203,1206],{},[23,1204,1205],{},"Performances"," : Précision de pointe, latence sous la seconde, SLA de 99,9%.",[16,1208,1209],{},"Cas d'usage : Agents de vente, veille corporate, détection de fuites de données, monitoring de réputation, etc.",[11,1211,1213],{"id":1212},"proxae","Proxae",[16,1215,1216],{},[47,1217,1218],{"href":1218,"rel":1219},"https:\u002F\u002Fproxae.com",[51],[16,1221,1222,1224],{},[23,1223,1213],{}," permet de certifier vos idées, textes et fichiers dans la blockchain Bitcoin. Créez des preuves infalsifiables et vérifiables à vie, sans confiance requise. Idéal pour protéger vos créations et prouver leur antériorité.",{"title":66,"searchDepth":103,"depth":103,"links":1226},[1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242],{"id":694,"depth":103,"text":695},{"id":719,"depth":103,"text":720},{"id":747,"depth":103,"text":748},{"id":796,"depth":103,"text":797},{"id":844,"depth":103,"text":845},{"id":871,"depth":103,"text":872},{"id":892,"depth":103,"text":893},{"id":909,"depth":103,"text":910},{"id":926,"depth":103,"text":927},{"id":949,"depth":103,"text":950},{"id":992,"depth":103,"text":993},{"id":1018,"depth":103,"text":1019},{"id":1038,"depth":103,"text":1039},{"id":1065,"depth":103,"text":1066},{"id":1148,"depth":103,"text":1149},{"id":1212,"depth":103,"text":1213},[660],"Nous évoquons TypeScript 7.0 RC jusqu'à 10 fois plus rapide, Astro 7.0 avec Sätteri et Rolldown, l'astuce de Mitchell Hashimoto pour piéger les PR sans review de code, Cursor sur iOS, Docker sur Vercel, Deno Desktop, Babel 8, le framework d'agents Eve, les modèles IA Fugu et Ornith, le nouveau Mistral OCR 4, Firecrawl Keyless, LightOn, Linkup et Proxae.","DS_135_news-jul26","https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1782901023\u002FART_135_m3vbav.png",135,[],{},"\u002Fpodcasts\u002Fnews-jul26","2026-07-01",{"title":689,"description":1244},"podcasts\u002F135.news-jul26\u002Findex","Les news pour juillet 2026, TypeScript 7 RC, Astro 7, agents IA et outils du mois.",[1256,1257,1258,1259,683,1260,1261,1262,939,1263,1264,1265,1266,1267,1268,1269,1148,1065],"typescript","astro","satteri","cursor","docker","deno","babel","ai","agents","mistral","ocr","firecrawl","fugu","ornith","zap1n9Sb_B4","yy5tgI6pHgFTECoSF_yVykbOUTv0jOSmE4C7_-oANMk",{"id":1273,"title":1274,"author":6,"body":1275,"categories":1629,"description":1630,"dsSlug":1631,"duration":669,"episodeArtwork":1632,"episodeNumber":1633,"episodeType":666,"explicit":667,"extension":668,"guid":669,"links":1634,"meta":1635,"navigation":672,"path":1636,"publicationDate":1637,"season":103,"seo":1638,"status":676,"stem":1639,"subtitle":1640,"tags":1641,"videoLink":1651,"__hash__":1652},"podcasts\u002Fpodcasts\u002F134.news-juin26-rc2\u002Findex.md","News Juin 2026 RC2, React quitte Meta, VoidZero rejoint Cloudflare et IA locale",{"type":8,"value":1276,"toc":1612},[1277,1281,1288,1295,1299,1305,1312,1316,1323,1330,1334,1340,1347,1351,1357,1368,1372,1379,1398,1402,1405,1411,1415,1421,1432,1436,1442,1445,1449,1455,1476,1480,1486,1493,1497,1503,1509,1512,1516,1522,1545,1549,1555,1586,1590,1597],[11,1278,1280],{"id":1279},"protect-the-shire-wordpress","Protect The Shire – WordPress",[16,1282,1283],{},[47,1284,1287],{"href":1285,"rel":1286},"https:\u002F\u002Fwordpress.org\u002Fnews\u002F2026\u002F06\u002Fpts\u002F",[51],"Lire l'article",[16,1289,1290,1291,1294],{},"WordPress lance l'initiative ",[23,1292,1293],{},"Protect The Shire"," pour sécuriser les 78 000 plugins et thèmes de son répertoire. Une période de refroidissement de 24 heures est introduite pour les mises à jour automatiques, permettant une revue approfondie des changements. L'objectif est de concilier rapidité et sécurité, en s'appuyant sur l'IA pour analyser les codes et prévenir les attaques de la chaîne d'approvisionnement.",[11,1296,1298],{"id":1297},"la-react-foundation-un-nouveau-foyer-pour-react-sous-la-linux-foundation","La React Foundation : Un nouveau foyer pour React sous la Linux Foundation",[16,1300,1301],{},[47,1302,1287],{"href":1303,"rel":1304},"https:\u002F\u002Freact.dev\u002Fblog\u002F2026\u002F02\u002F24\u002Fthe-react-foundation",[51],[16,1306,1307,1308,1311],{},"React, React Native et les projets associés comme JSX ne sont plus détenus par Meta, mais par la ",[23,1309,1310],{},"React Foundation",", une fondation indépendante hébergée par la Linux Foundation. Les membres fondateurs incluent Amazon, Callstack, Expo, Huawei, Meta, Microsoft, Software Mansion et Vercel. Cette transition vise à garantir une gouvernance technique indépendante et à soutenir l'écosystème React.",[11,1313,1315],{"id":1314},"the-story-of-php-la-bande-annonce-du-documentaire","The Story of PHP : La bande-annonce du documentaire",[16,1317,1318],{},[47,1319,1322],{"href":1320,"rel":1321},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=4W4y46WVdCU",[51],"Voir la vidéo",[16,1324,1325,1326,1329],{},"CultRepo annonce la sortie prochaine d'un ",[23,1327,1328],{},"documentaire sur l'histoire de PHP",", avec des témoignages exclusifs de figures majeures comme Nils Adermann (créateur de Composer), Taylor Otwell (créateur de Laravel), Nikita Popov (contributeur principal de PHP), Fabien Potencier (créateur de Symfony), et Roman Pronskiy (directeur fondateur de The PHP Foundation). Ce documentaire retrace l'évolution de PHP, depuis ses débuts improvisés jusqu'à son rôle central dans les plateformes de contenu, les CMS, et les infrastructures gouvernementales.",[11,1331,1333],{"id":1332},"rejoignez-lessai-dorigine-de-webmcp-dans-chrome-149","Rejoignez l'essai d'origine de WebMCP dans Chrome 149",[16,1335,1336],{},[47,1337,1287],{"href":1338,"rel":1339},"https:\u002F\u002Fdeveloper.chrome.com\u002Fblog\u002Fai-webmcp-origin-trial",[51],[16,1341,1342,1343,1346],{},"Chrome 149 lance un ",[23,1344,1345],{},"essai d'origine pour WebMCP",", une fonctionnalité permettant aux développeurs de définir des règles d'interaction entre les applications web et les agents IA. Cela permet de déclarer explicitement la fonction des éléments d'interface (boutons, champs de formulaire, etc.) et de gérer l'état de la page, pour un remplissage plus précis des formulaires ou un débogage efficace.",[11,1348,1350],{"id":1349},"tanstack-ai-en-version-bêta-loutil-agnostique-pour-lia","TanStack AI en version bêta : L'outil agnostique pour l'IA",[16,1352,1353],{},[47,1354,1287],{"href":1355,"rel":1356},"https:\u002F\u002Ftanstack.com\u002Fblog\u002Ftanstack-ai-beta",[51],[16,1358,1359,1360,1363,1364,1367],{},"TanStack annonce la version ",[23,1361,1362],{},"bêta de TanStack AI",", un outil ",[23,1365,1366],{},"agnostique de framework et de fournisseur"," conçu pour les développeurs qui veulent garder le contrôle de leur stack. Après une phase alpha riche en apprentissages, cette version bêta propose une API stable, une documentation complète et une prise en charge multi-modale (texte, audio, vidéo, images, chat vocal en temps réel). TanStack AI permet de basculer facilement entre les fournisseurs (OpenAI, Anthropic, Google, etc.) tout en conservant une typage TypeScript strict et des outils intégrés comme les appels de fonctions, la génération structurée, et le Model Context Protocol (MCP).",[11,1369,1371],{"id":1370},"maizzle-6-est-disponible","Maizzle 6 est disponible",[16,1373,1374],{},[47,1375,1378],{"href":1376,"rel":1377},"https:\u002F\u002Fx.com\u002Fcossssmin\u002Fstatus\u002F2064351831782838539",[51],"Lire le thread",[16,1380,1381,1382,1385,1386,1389,1390,1393,1394,1397],{},"Maizzle 6 est enfin là avec une ",[23,1383,1384],{},"refonte complète"," : passage à ",[23,1387,1388],{},"Tailwind CSS 4",", des templates en ",[23,1391,1392],{},"Vue",", un plugin ",[23,1395,1396],{},"Vite",", des composants dédiés, une expérience développeur repensée, et même des compétences pour les agents IA. Une version majeure pour construire des emails HTML comme on construit des applications.",[11,1399,1401],{"id":1400},"glm-52","GLM-5.2",[16,1403,1404],{},"Le modèle chinois rivalise avec les meilleurs modèles tout en étant open source\u002Fweight",[16,1406,1407],{},[47,1408,1378],{"href":1409,"rel":1410},"https:\u002F\u002Fx.com\u002FZai_org\u002Fstatus\u002F2066938937344495629?s=20",[51],[11,1412,1414],{"id":1413},"mellum2-passe-en-open-source-un-modèle-rapide-pour-les-workflows-dia","Mellum2 passe en open source : un modèle rapide pour les workflows d'IA",[16,1416,1417],{},[47,1418,1287],{"href":1419,"rel":1420},"https:\u002F\u002Fblog.jetbrains.com\u002Fai\u002F2026\u002F06\u002Fmellum2-goes-open-source-a-fast-model-for-ai-workflows\u002F",[51],[16,1422,1423,1424,1427,1428,1431],{},"JetBrains annonce que ",[23,1425,1426],{},"Mellum2",", un modèle de 12 milliards de paramètres, passe en open source sous licence Apache 2.0. Conçu pour résoudre les défis les plus difficiles de l'IA en production (latence, débit, coût), Mellum2 utilise une architecture ",[23,1429,1430],{},"Mixture-of-Experts (MoE)"," où seulement 2,5 milliards de paramètres sont actifs par token. Idéal pour le routage, les pipelines RAG à faible latence, les sous-agents rapides et les déploiements locaux ou privés.",[11,1433,1435],{"id":1434},"voidzero-rejoint-cloudflare","VoidZero rejoint Cloudflare",[16,1437,1438],{},[47,1439,1287],{"href":1440,"rel":1441},"https:\u002F\u002Fvoidzero.dev\u002Fposts\u002Fvoidzero-cloudflare",[51],[16,1443,1444],{},"VoidZero annonce son intégration à Cloudflare. Les projets phares comme Vite, Vitest, Rolldown, Oxc et Vite+ resteront open-source et sous licence MIT. Evan You et son équipe continueront de diriger ces projets, avec un engagement total de Cloudflare pour soutenir leur mission. Cette collaboration vise à renforcer l'écosystème Vite et à améliorer l'expérience de déploiement sur Cloudflare, tout en respectant les valeurs de l'open source et de la communauté.",[11,1446,1448],{"id":1447},"declarative-partial-updates-out-of-order-streaming-dans-chrome-148","Declarative Partial Updates & Out-of-Order Streaming dans Chrome 148",[16,1450,1451],{},[47,1452,1287],{"href":1453,"rel":1454},"https:\u002F\u002Fdeveloper.chrome.com\u002Fblog\u002Fdeclarative-partial-updates",[51],[16,1456,1457,1458,1461,1462,1465,1466,243,1469,243,1472,1475],{},"Chrome 148 introduit les ",[23,1459,1460],{},"Declarative Partial Updates",", une fonctionnalité permettant de charger et afficher des parties spécifiques d'une page HTML de manière asynchrone et hors ordre. Cela optimise les performances des applications web en utilisant des balises ",[68,1463,1464],{},"\u003Ctemplate>"," et des instructions de traitement (",[68,1467,1468],{},"\u003C?marker>",[68,1470,1471],{},"\u003C?start>",[68,1473,1474],{},"\u003C?end>","), ainsi que de nouvelles API JavaScript pour insérer ou remplacer dynamiquement du contenu.",[11,1477,1479],{"id":1478},"considérations-de-sécurité-pour-les-agents-webmcp","Considérations de sécurité pour les agents WebMCP",[16,1481,1482],{},[47,1483,1287],{"href":1484,"rel":1485},"https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fagents\u002Fsecurity",[51],[16,1487,1488,1489,1492],{},"L'article de Chrome aborde les ",[23,1490,1491],{},"considérations de sécurité pour les développeurs d'agents utilisant WebMCP",", avec des recommandations pour se protéger contre les contenus malveillants et les attaques par injection de prompts, notamment via des garde-fous déterministes et probabilistes.",[11,1494,1496],{"id":1495},"quel-est-le-meilleur-modèle-économique-pour-un-laboratoire-dia-abonnement-ou-api","Quel est le meilleur modèle économique pour un laboratoire d'IA : abonnement ou API ?",[16,1498,1499],{},[47,1500,1378],{"href":1501,"rel":1502},"https:\u002F\u002Fx.com\u002FSemiAnalysis_\u002Fstatus\u002F2064815044085318040",[51],[16,1504,1505],{},[47,1506,1378],{"href":1507,"rel":1508},"https:\u002F\u002Fx.com\u002FHesamation\u002Fstatus\u002F2066615113998553111?s=20",[51],[16,1510,1511],{},"SemiAnalysis a comparé les plans d'abonnement d'Anthropic et d'OpenAI en testant des tâches de codage longues jusqu'à épuisement des limites hebdomadaires. Contrairement à l'idée reçue, les abonnements offrent des marges bien plus généreuses que prévu : un abonnement à 200 $\u002Fmois permet d'obtenir une valeur équivalente à bien plus que 2 000 $\u002Fmois en tokens (au tarif API). Cependant, les laboratoires d'IA pourraient limiter les nouvelles fonctionnalités ou modèles aux abonnements, pour éviter de réduire explicitement leurs avantages et ainsi éviter un retour de bâton public.",[11,1513,1515],{"id":1514},"mistral-ai-annonce-un-nouveau-modèle-open-weight-et-des-outils-pour-lautonomie-des-systèmes-dia","Mistral AI annonce un nouveau modèle open-weight et des outils pour l'autonomie des systèmes d'IA",[16,1517,1518],{},[47,1519,1378],{"href":1520,"rel":1521},"https:\u002F\u002Fx.com\u002Farthurmensch\u002Fstatus\u002F2066913353860018596",[51],[16,1523,1524,1525,1528,1529,1532,1533,1536,1537,1540,1541,1544],{},"Mistral AI prépare un ",[23,1526,1527],{},"nouveau modèle"," pour cet été, marquant le début d'une famille de modèles grands mais \"sparse\". Tous les modèles à venir seront ",[23,1530,1531],{},"open-weight",", avec un accent sur la confiance des clients et l'autonomie des communautés. ",[23,1534,1535],{},"Studio"," (déploiement) et ",[23,1538,1539],{},"Forge"," (entraînement) sont des produits portables, hébergés sur une infrastructure contrôlée par Mistral. L'objectif : permettre aux entreprises et gouvernements de déployer des systèmes d'IA ",[23,1542,1543],{},"indépendants",", avec une structure de coûts efficace et un entraînement continu basé sur les interactions humain-IA.",[11,1546,1548],{"id":1547},"amd-lance-le-ryzen-ai-halo-un-monstre-dia-locale-pour-windows-11","AMD lance le Ryzen AI Halo : un monstre d'IA locale pour Windows 11",[16,1550,1551],{},[47,1552,1287],{"href":1553,"rel":1554},"https:\u002F\u002Fwww.neowin.net\u002Fnews\u002Famd-launches-4000-ryzen-ai-halo-local-ai-monster-for-windows-11-with-128gb-ram\u002F",[51],[16,1556,1557,1558,1561,1562,1565,1566,1569,1570,1573,1574,1577,1578,1581,1582,1585],{},"AMD présente le ",[23,1559,1560],{},"Ryzen AI Halo",", une plateforme conçue pour simplifier le déploiement de l'IA locale sous Windows 11. Avec ",[23,1563,1564],{},"128 Go de RAM",", ce PC à ",[23,1567,1568],{},"4 000 $"," est optimisé pour les charges de travail d'IA générative, prenant en charge des modèles jusqu'à ",[23,1571,1572],{},"200 milliards de paramètres",". Grâce à sa plateforme ",[23,1575,1576],{},"ROCm 7.2"," et son ",[23,1579,1580],{},"Ryzen AI Development Center",", il offre une solution clé en main pour les développeurs, avec des performances supérieures de ",[23,1583,1584],{},"14 % en TPS\u002F$"," par rapport à Nvidia DGX Spark (Linux uniquement). Une alternative puissante pour les créateurs et entreprises souhaitant exécuter des modèles d'IA localement.",[11,1587,1589],{"id":1588},"gmktec-evo-x2-un-mini-pc-puissant-pour-lia-locale","GMKtec Evo X2 : Un mini-PC puissant pour l'IA locale",[16,1591,1592],{},[47,1593,1596],{"href":1594,"rel":1595},"https:\u002F\u002Fwww.amazon.fr\u002FGMKtec-Evo-X2-5-1GHz-LPDDR5X-Display\u002Fdp\u002FB0F6X332N6?th=1",[51],"Voir sur Amazon",[16,1598,1599,1600,1603,1604,1607,1608,1611],{},"Le ",[23,1601,1602],{},"GMKtec Evo X2"," est un mini-PC compact mais puissant, équipé d'un processeur performant (jusqu'à ",[23,1605,1606],{},"5,1 GHz","), de ",[23,1609,1610],{},"LPDDR5X",", et conçu pour les tâches exigeantes comme l'IA locale. Idéal pour les développeurs et les utilisateurs cherchant une solution portable et efficace pour exécuter des modèles d'IA sans sacrifier la puissance.",{"title":66,"searchDepth":103,"depth":103,"links":1613},[1614,1615,1616,1617,1618,1619,1620,1621,1622,1623,1624,1625,1626,1627,1628],{"id":1279,"depth":103,"text":1280},{"id":1297,"depth":103,"text":1298},{"id":1314,"depth":103,"text":1315},{"id":1332,"depth":103,"text":1333},{"id":1349,"depth":103,"text":1350},{"id":1370,"depth":103,"text":1371},{"id":1400,"depth":103,"text":1401},{"id":1413,"depth":103,"text":1414},{"id":1434,"depth":103,"text":1435},{"id":1447,"depth":103,"text":1448},{"id":1478,"depth":103,"text":1479},{"id":1495,"depth":103,"text":1496},{"id":1514,"depth":103,"text":1515},{"id":1547,"depth":103,"text":1548},{"id":1588,"depth":103,"text":1589},[660],"Nous évoquons React qui passe sous la Linux Foundation avec la React Foundation, VoidZero et Vite qui rejoignent Cloudflare, l'initiative Protect The Shire pour sécuriser les 78 000 plugins WordPress, TanStack AI en beta, Maizzle 6 et sa refonte Tailwind CSS 4, les nouveaux modèles open-weight de Mistral, Mellum2 qui passe en open source, le Ryzen AI Halo d'AMD avec 128 Go de RAM pour faire tourner 200 milliards de paramètres en local, et les nouveautés Chrome comme WebMCP et les Declarative Partial Updates.","DS_134_news-juin26-rc2","https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1781689392\u002Fepisode\u002FART_134_dmbb8r.png",134,[],{},"\u002Fpodcasts\u002Fnews-juin26-rc2","2026-06-17",{"title":1274,"description":1630},"podcasts\u002F134.news-juin26-rc2\u002Findex","Les news pour la deuxième quinzaine de juin 2026, React Foundation, VoidZero x Cloudflare, WordPress Protect The Shire et toujours plus d'IA.",[1642,1643,1644,1645,1646,1647,1648,1649,1650],"wordpress","PHP","React","chrome","Maizzle","TanStack","IA","Mistral","AMD","4DUHYPTYipk","QDXcLfe96VIANUp6FNoBARKGMpWfqWvr0fi34JAr4lo",{"id":1654,"title":1655,"author":6,"body":1656,"categories":1943,"description":1944,"dsSlug":1945,"duration":669,"episodeArtwork":1946,"episodeNumber":1947,"episodeType":666,"explicit":667,"extension":668,"guid":669,"links":1948,"meta":1949,"navigation":672,"path":1950,"publicationDate":1951,"season":103,"seo":1952,"status":676,"stem":1953,"subtitle":1954,"tags":1955,"videoLink":1967,"__hash__":1968},"podcasts\u002Fpodcasts\u002F133.news-jun26\u002Findex.md","News Juin 2026, Bun passe à Rust, npm verrouille les scripts et SEO pour l'IA",{"type":8,"value":1657,"toc":1924},[1658,1662,1667,1691,1697,1701,1708,1725,1728,1741,1744,1752,1758,1762,1768,1772,1778,1782,1788,1794,1798,1804,1808,1814,1818,1824,1828,1834,1838,1852,1856,1862,1866,1872,1876,1882,1886,1892,1896,1901,1905,1911,1915,1921],[11,1659,1661],{"id":1660},"composer-210","Composer 2.10",[16,1663,1664],{},[23,1665,1666],{},"Filtrage natif des logiciels malveillants",[41,1668,1669,1672,1684],{},[44,1670,1671],{},"Intègre une détection automatique des paquets malveillants publiés sur Packagist.org, alimentée par Aikido.",[44,1673,1674,1675,243,1678,963,1681,236],{},"Les versions de paquets malveillantes sont bloquées lors des opérations ",[68,1676,1677],{},"composer update",[68,1679,1680],{},"require",[68,1682,1683],{},"install",[44,1685,1686,1687,1690],{},"Le logiciel malveillant est également signalé par ",[68,1688,1689],{},"composer audit",", qui échoue par défaut en cas de détection.",[16,1692,1693],{},[47,1694,1695],{"href":1695,"rel":1696},"https:\u002F\u002Fblog.packagist.com\u002Fcomposer-2-10-release\u002F",[51],[11,1698,1700],{"id":1699},"npm","NPM",[16,1702,1703,1704,1707],{},"pnpm bloque les scripts preinstall et postinstall, yarn v4 aussi.",[1705,1706],"br",{},"\nActuellement, npm autorise les scripts preinstall et postinstall par défaut.\nPour désactiver les scripts, utilisez l'option --ignore-scripts :",[61,1709,1713],{"className":1710,"code":1711,"language":1712,"meta":66,"style":66},"language-bash shiki shiki-themes synthwave-84","npm install --ignore-scripts\n","bash",[68,1714,1715],{"__ignoreMap":66},[71,1716,1717,1719,1722],{"class":73,"line":74},[71,1718,1699],{"class":129},[71,1720,1721],{"class":81}," install",[71,1723,1724],{"class":474}," --ignore-scripts\n",[16,1726,1727],{},"npm v11.16",[41,1729,1730,1733,1738],{},[44,1731,1732],{},"Phase 1 - PR fusionné",[44,1734,1735,1736],{},"package.allowScripts = ",[71,1737],{},[44,1739,1740],{},"Avertissements sur les scripts postinstall non approuvés",[16,1742,1743],{},"npm v12.0",[41,1745,1746,1749],{},[44,1747,1748],{},"Phase 2 - Prochain PR à venir",[44,1750,1751],{},"Bloque par défaut les scripts postinstall non approuvés",[16,1753,1754],{},[47,1755,1756],{"href":1756,"rel":1757},"https:\u002F\u002Fx.com\u002Fsebastienlorber\u002Fstatus\u002F2059659115228508376?s=20",[51],[11,1759,1761],{"id":1760},"utiq","Utiq",[16,1763,1764],{},[47,1765,1766],{"href":1766,"rel":1767},"https:\u002F\u002Fkorben.info\u002Futiq-identifiant-publicitaire-telcos.html",[51],[11,1769,1771],{"id":1770},"windsurf-est-mort-vive-devindesktop","Windsurf est mort, Vive DevinDesktop",[16,1773,1774],{},[47,1775,1776],{"href":1776,"rel":1777},"https:\u002F\u002Fdevin.ai\u002Fblog\u002Fwindsurf-is-now-devin-desktop",[51],[11,1779,1781],{"id":1780},"perry","Perry",[16,1783,1784,1785],{},"TS to native ",[23,1786,1787],{},"macOS, iPadOS, iOS, Android, Linux, Windows, watchOS, tvOS, WebAssembly, and the Web",[16,1789,1790],{},[47,1791,1792],{"href":1792,"rel":1793},"https:\u002F\u002Fwww.perryts.com",[51],[11,1795,1797],{"id":1796},"kimi-webbridge","Kimi WebBridge",[16,1799,1800],{},[47,1801,1802],{"href":1802,"rel":1803},"https:\u002F\u002Fwww.kimi.com\u002Ffeatures\u002Fwebbridge",[51],[11,1805,1807],{"id":1806},"mcp-chrome-dev-tools","MCP Chrome dev tools",[16,1809,1810],{},[47,1811,1812],{"href":1812,"rel":1813},"https:\u002F\u002Fdeveloper.chrome.com\u002Fblog\u002Fdevtools-for-agents-v1",[51],[11,1815,1817],{"id":1816},"is-ai-profitable","IS AI Profitable",[16,1819,1820],{},[47,1821,1822],{"href":1822,"rel":1823},"https:\u002F\u002Fisaiprofitable.com",[51],[11,1825,1827],{"id":1826},"seo-geo-les-infos-de-google","SEO GEO les infos de Google",[16,1829,1830],{},[47,1831,1832],{"href":1832,"rel":1833},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Ffundamentals\u002Fai-optimization-guide?hl=fr",[51],[11,1835,1837],{"id":1836},"bun-en-rust","Bun en Rust",[41,1839,1840,1846],{},[44,1841,1842],{},[47,1843,1844],{"href":1844,"rel":1845},"https:\u002F\u002Frust.developpez.com\u002Factu\u002F382917\u002FBun-la-boite-a-outils-JavaScript-sur-laquelle-tourne-Claude-Code-en-train-d-etre-portee-de-Zig-vers-Rust-par-des-agents-IA-Entre-experience-prometteuse-et-signal-d-alarme-les-developpeurs-sont-partages\u002F",[51],[44,1847,1848],{},[47,1849,1850],{"href":1850,"rel":1851},"https:\u002F\u002Fgithub.com\u002Foven-sh\u002Fbun\u002Fpull\u002F30412",[51],[11,1853,1855],{"id":1854},"osaurus","Osaurus",[16,1857,1858],{},[47,1859,1860],{"href":1860,"rel":1861},"https:\u002F\u002Fosaurus.ai",[51],[11,1863,1865],{"id":1864},"omlx","OMLX",[16,1867,1868],{},[47,1869,1870],{"href":1870,"rel":1871},"https:\u002F\u002Fomlx.ai",[51],[11,1873,1875],{"id":1874},"liquid-dom","Liquid Dom",[16,1877,1878],{},[47,1879,1880],{"href":1880,"rel":1881},"https:\u002F\u002Fgithub.com\u002FAndrewPrifer\u002Fliquid-dom",[51],[11,1883,1885],{"id":1884},"openhare","OpenHare",[16,1887,1888],{},[47,1889,1890],{"href":1890,"rel":1891},"https:\u002F\u002Fsjjian.github.io\u002Fopenhare\u002F",[51],[11,1893,1895],{"id":1894},"tablepro","TablePro",[16,1897,1898],{},[47,1899,1870],{"href":1870,"rel":1900},[51],[11,1902,1904],{"id":1903},"formisch","Formisch",[16,1906,1907],{},[47,1908,1909],{"href":1909,"rel":1910},"https:\u002F\u002Fformisch.dev",[51],[11,1912,1914],{"id":1913},"attention-aux-skills","Attention aux Skills",[16,1916,1917],{},[47,1918,1919],{"href":1919,"rel":1920},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=WNJHMoHTrBU",[51],[650,1922,1923],{},"html pre.shiki code .sRQ1T, html code.shiki .sRQ1T{--shiki-default:#FE4450}html pre.shiki code .soy-K, html code.shiki .soy-K{--shiki-default:#BBBBBB}html pre.shiki code .sSmKr, html code.shiki .sSmKr{--shiki-default:#F97E72}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":66,"searchDepth":103,"depth":103,"links":1925},[1926,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942],{"id":1660,"depth":103,"text":1661},{"id":1699,"depth":103,"text":1700},{"id":1760,"depth":103,"text":1761},{"id":1770,"depth":103,"text":1771},{"id":1780,"depth":103,"text":1781},{"id":1796,"depth":103,"text":1797},{"id":1806,"depth":103,"text":1807},{"id":1816,"depth":103,"text":1817},{"id":1826,"depth":103,"text":1827},{"id":1836,"depth":103,"text":1837},{"id":1854,"depth":103,"text":1855},{"id":1864,"depth":103,"text":1865},{"id":1874,"depth":103,"text":1875},{"id":1884,"depth":103,"text":1885},{"id":1894,"depth":103,"text":1895},{"id":1903,"depth":103,"text":1904},{"id":1913,"depth":103,"text":1914},[660],"Nous évoquons le portage de Bun de Zig vers Rust par des agents IA, npm qui bloque par défaut les scripts postinstall non approuvés, Composer 2.10 qui filtre nativement les paquets malveillants, Windsurf absorbé par Devin Desktop, le guide SEO de Google optimisé pour les IA, MCP Chrome DevTools, Kimi WebBridge et quelques outils comme Perry, Osaurus ou Liquid Dom.","DS_133_news-juin26","https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1780480242\u002Fepisode\u002FART_133_tt4h5f.png",133,[],{},"\u002Fpodcasts\u002Fnews-jun26","2026-06-03",{"title":1655,"description":1944},"podcasts\u002F133.news-jun26\u002Findex","Les news pour juin 2026, sécurité npm\u002FComposer, Bun porté en Rust, SEO IA et outils MCP.",[1699,1956,1957,1958,1959,1960,1961,1962,1963,1263,1964,1645,1965,1966,1780],"bun","rust","zig","composer","windsurf","devin","google","seo","mcp","devtools","kimi","lS9ZDxoTzNo","9JlQTn72WckrHwnHmZuEaWp1vUZvrp95BNiawEherlQ",["Island",1970],{"key":1971,"result":1972},"Brand_MGiE2124NreQdi6M9K0OJouU5fhlpYiTp1rQiyE",{"head":1973},{},["Island",1975],{"key":1976,"result":1977},"Duration_MaheYdoKNBdXxDwVHc4tuelg3fYwH70Mvl1H9mi0gE",{"head":1978},{},["Island",1980],{"key":1981,"result":1982},"Duration_tm3uk3sCrY3zDdcBxcjsEJ987tav7Zo8c8InRUGfxM",{"head":1983},{},["Island",1985],{"key":1986,"result":1987},"Duration_Vev9dJUWGsTTGSg2IAAMw96CRzrlNXL15219JzktA8M",{"head":1988},{},["Island",1990],{"key":1991,"result":1992},"Duration_NJRa9zPyKrTUsIvLY8TgoviWv2AGa03uBfGEJ1BQVk4",{"head":1993},{},{"left":1995,"top":1995,"width":643,"height":643,"rotate":1995,"vFlip":667,"hFlip":667,"body":1996},0,"\u003Cpath fill=\"currentColor\" d=\"m4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8z\"\u002F>",{"left":1995,"top":1995,"width":643,"height":643,"rotate":1995,"vFlip":667,"hFlip":667,"body":1998},"\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":1995,"top":1995,"width":643,"height":643,"rotate":1995,"vFlip":667,"hFlip":667,"body":2000},"\u003Cpath fill=\"currentColor\" d=\"M4 21V9l8-6l8 6v12h-6v-7h-4v7z\"\u002F>",{"left":1995,"top":1995,"width":643,"height":643,"rotate":1995,"vFlip":667,"hFlip":667,"body":2002},"\u003Cpath fill=\"currentColor\" d=\"M4 11v2h12l-5.5 5.5l1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5L16 11z\"\u002F>",{"left":1995,"top":1995,"width":643,"height":643,"rotate":1995,"vFlip":667,"hFlip":667,"body":2004},"\u003Cpath fill=\"currentColor\" 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>",{"left":1995,"top":1995,"width":643,"height":643,"rotate":1995,"vFlip":667,"hFlip":667,"body":2006},"\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":1995,"top":1995,"width":2008,"height":2009,"rotate":1995,"vFlip":667,"hFlip":667,"body":2010},256,180,"\u003Cpath fill=\"red\" d=\"M250.346 28.075A32.18 32.18 0 0 0 227.69 5.418C207.824 0 127.87 0 127.87 0S47.912.164 28.046 5.582A32.18 32.18 0 0 0 5.39 28.24c-6.009 35.298-8.34 89.084.165 122.97a32.18 32.18 0 0 0 22.656 22.657c19.866 5.418 99.822 5.418 99.822 5.418s79.955 0 99.82-5.418a32.18 32.18 0 0 0 22.657-22.657c6.338-35.348 8.291-89.1-.164-123.134\"\u002F>\u003Cpath fill=\"#fff\" d=\"m102.421 128.06l66.328-38.418l-66.328-38.418z\"\u002F>",{"left":1995,"top":1995,"width":2008,"height":2012,"rotate":1995,"vFlip":667,"hFlip":667,"body":2013},226,"\u003Cpath fill=\"#1185fe\" d=\"M55.491 15.172c29.35 22.035 60.917 66.712 72.509 90.686c11.592-23.974 43.159-68.651 72.509-90.686C221.686-.727 256-13.028 256 26.116c0 7.818-4.482 65.674-7.111 75.068c-9.138 32.654-42.436 40.983-72.057 35.942c51.775 8.812 64.946 38 36.501 67.187c-54.021 55.433-77.644-13.908-83.696-31.676c-1.11-3.257-1.63-4.78-1.637-3.485c-.008-1.296-.527.228-1.637 3.485c-6.052 17.768-29.675 87.11-83.696 31.676c-28.445-29.187-15.274-58.375 36.5-67.187c-29.62 5.041-62.918-3.288-72.056-35.942C4.482 91.79 0 33.934 0 26.116C0-13.028 34.314-.727 55.491 15.172\"\u002F>",{"left":1995,"top":1995,"width":2015,"height":2015,"rotate":1995,"vFlip":667,"hFlip":667,"body":2016},512,"\u003Cpath fill=\"currentColor\" d=\"M391.17 103.47h-38.63v109.7h38.63ZM285 103h-38.63v109.75H285ZM120.83 0L24.31 91.42v329.16h115.83V512l96.53-91.42h77.25L487.69 256V0Zm328.24 237.75l-77.22 73.12h-77.24l-67.6 64v-64h-86.87V36.58h308.93Z\"\u002F>",{"left":1995,"top":1995,"width":2018,"height":2015,"rotate":1995,"vFlip":667,"hFlip":667,"body":2019},448,"\u003Cpath fill=\"currentColor\" d=\"M64 32C28.7 32 0 60.7 0 96v320c0 35.3 28.7 64 64 64h320c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64zm297.1 84L257.3 234.6L379.4 396h-95.6L209 298.1L123.3 396H75.8l111-126.9L69.7 116h98l67.7 89.5l78.2-89.5zm-37.8 251.6L153.4 142.9h-28.3l171.8 224.7h26.3z\"\u002F>",["Island",2021],{"key":2022,"result":2023},"Footer_afPiwGMwNiEyV4syWzw87ovzxHAgs4iwKtCn4zqBf8E",{"head":2024},{"style":2025},[2026],{"innerHTML":2027},":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\")}",["Island",2029],{"key":2030,"result":2031},"LastArticle_DmhppTmONOnDPrslrCE55LhowHggBX6xSbJaygY",{"head":2032},{},{"left":1995,"top":1995,"width":2034,"height":2034,"rotate":1995,"vFlip":667,"hFlip":667,"body":2035},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",2037],{"key":2038,"result":2039},"Cohost_yohWxdEXgFpheBcSI1z7UA6L3KZhPCFuiSWAQ4MGYTo",{"head":2040},{},1785405171348]