Published: Nov. 27, 2023, 5:40 p.m.
Dans cet \xe9pisode, Emmanuel, Guillaume et Katia abordent les nouveaut\xe9s Java, le lancement du langage Misty par Douglas Crockford, l\u2019arriv\xe9e de WasmGC dans Chrome, la sortie de Spring Framework 6.1, des \xe9volutions dans les biblioth\xe8ques comme Vert.x 4.5, et des conseils sur la cr\xe9ation de langages de programmation. L\u2019\xe9pisode couvre \xe9galement des actualit\xe9s dans les domaines de l\u2019infrastructure avec le premier ordinateur cloud commercial par Oxide, des annonces sur les frameworks web comme Angular v17, des r\xe9flexions sur les architectures monolithiques versus microservices, et sans oublier le soap Op\xe9ra du moins de novembre avec OpenAI en vedette.
Enregistr\xe9 le 23 novembre 2023
T\xe9l\xe9chargement de l\u2019\xe9pisode LesCastCodeurs-Episode-302.mp3
News Langages
Recap Javaiste https://www.infoq.com/news/2023/10/java-news-roundup-oct09-2023
- la JEP 454 sur l\u2019appel a la memoire et les API dites natives passera en target pour JDK 22 avec une fa\xe7on d\u2019ajouter les appels de m\xe9thodes restreintes sans le flag
--enable-native-access
(via un manifeste dans le JAR) - JDK 22 pr\xe9vu pour mars 2024
- Spring Framework 6.1 est sorti (RC2)
- Tomcat a quelques CVE donc mettez \xe0 jour
Douglas Crockford, le papa de JSON, sort un nouveau langage d\xe9nomm\xe9 Misty https://www.crockford.com/misty/
- Utilise des caract\xe8res unicodes pour d\xe9finir des cha\xeenes de caract\xe8res avec des chevrons, ou pour les op\xe9rateurs de base (comparison, and/or)
- Support de programmation concurrente avec les actors
WasmGC arrive dans Chrome, par l\u2019interm\xe9diaire de v8 https://v8.dev/blog/wasm-gc-porting
- historiquement il fallait compiler le port du langage lui meme (et donc son GC)
- Maintenant on peut compiler le code (java) dans des primitives Wasm et WasmGC
- Java python et co ont des VM qui sont compil\xe9es pour toutes les architecture cibles (ARM, x86 etc) y compris le JIT, AOT
- donc on peut d\xe9finir comme backend WASM lui meme, c\u2019est l\u2019approche classique
- WasmGC d\xe9finit des structs et des array avec des champs dans lesquels on peut cr\xe9er des instances, lire/\xe9crire les champs, caster dans d\u2019autres types et ces objects sont manag\xe9s par WasmGC lui meme. on a un syst\xe8me de type du coup et des relations entre ces types
- Donc on repr\xe9senterait les objets Java en objets Wasm
- avantage et inconvenient des deux approches
- tous les codes de management d\u2019objets ne sont plus n\xe9cessaires (y compris malloc) -> gain memoire
- en mode GC dans le langage les liens object langage <-> objets Wasm sont inefficaces car le lien langage -> wasm d\xe9finissent l\u2019instance enti\xe8re Wasm, donc des gros cycles d\u2019objets ne sont pas GCed
- Wasm sandbox emp\xeache d\u2019inspecter la stack et d\u2019\xe9liminer des objets plus efficacement, et il n\u2019y a pas d\u2019API pour aider donc seul WasmGC peut utiliser cet avantage.
- un seul GC a des avantages: meilleure gestion de la pression memoire
- mais on r\xe9utilise le GC du web (genre V8) vs celui de Java. (c\u2019est moins un probl\xe8me pour les autres langages avec des gc moins sophistiqu\xe9s)
- fragmentation memoire, est plus pro\xe9minent quand on a des modules de type C qui peur garder des gros blocs memoire \u201cquasi vide\u201d (opaque). c\u2019est manag\xe9 plus finement en WasmGC
- S\xe9mantiques de langage est plus dur a achev\xe9 vu qu\u2019on map en concepts WasmGC, il y a de la transformation.
- s\xe9mantiques chaine de caract\xe8re, nombres, etc peuvent \xeatre un peu ajust\xe9
- un port utilisant WasmGC n\u2019est pas une r\xe9\xe9criture de tout mais un gros morceau de la VM du langage cible est a r\xe9\xe9crire
- WasmGC peut optimiser comme les patterns en JVM mais en WasmMVP c\u2019est la toolchain avant qui fait le travail d\u2019optimisation (e.g.\xa0LLVM)
- donc avec WasmGC, la toolchain fera les optimisations de langage et WasmGC fera les optimisations low level (inlining, constant propagation, dead code elimination)
- puis d\u2019autres optimisation specific a WasmGC comme les escape analysis,
- et ils parlent d\u2019optimisations dans V8 pour approcher les appels dynamique a la Java (pas d\xe9fini a la compilation)
Ecrire un langage de programmation\u2026 \xe7a prend du temps\u2026 beaucoup de temps https://yorickpeterse.com/articles/a-decade-of-developing-a-programming-language/
- \xc9vitez le gradual typing
- \xc9vitez le boostrapping de votre compilateur
- \xc9vitez d\u2019\xe9crire votre propre g\xe9n\xe9rateur de code, linker, etc
- \xc9vitez de tergiverser trop longtemps sur la syntaxe
- La prise en charge multiplateforme est un d\xe9fi
- Les livres sur les compilateurs compilateurs ne valent pas l\u2019argent que vous d\xe9penserez dessus
- Faire grandir et \xe9voluer un langage de programmation est difficile
- La meilleure suite de tests est une application r\xe9elle
- Ne privil\xe9giez pas les performances sur les fonctionnalit\xe9s.
Librairies
Spring Boot rajoute le hot reload des certificats SSL pour embedded Netty et Tomcat https://spring.io/blog/2023/11/07/ssl-hot-reload-in-spring-boot-3-2-0
- utilisez
reload-on-update: true
- et \xe9coute les changements de fichiers
- pas mal dans les d\xe9ploiements non immuables (pas comme kubernetes)
VertX 4.5 est sorti https://vertx.io/blog/whats-new-in-vert-x-4-5/
- support des thread virtuels qui permet d\u2019\xe9crire le code synchrone pour des cas complexes et utiliser les thread locaux dans ces cas la. Cela ne remplacement pas le code de process des \xe9v\xe9nements
- le code put faire des future await qui ne bloqueront pas le thread principal
- connection SQL dynamique: quand le host change dynamiquement dans l\u2019application
- support des proxies de niveau 7 pour les clients SQL
- rotation certificats a chaud
- des builders (HTTP, SQL connection)
- extensions pour utiliser les coroutines kotlin
Integration declarative de Langchain4j dans Quarkus https://quarkus.io/blog/quarkus-meets-langchain4j/
Infrastructure
Oxide sort le premier ordinateur cloud disponible commercialement https://oxide.computer/blog/the-cloud-computer
- pas facile de s\xe9parer le buzz de la r\xe9alit\xe9
- on dirait un ordi purpose built avec l\u2019efficience et le cote compact en tete
- ils poussent contre le mode location uniquement des cloud providers
- en gros inspire des cloud providers qui construisent leurs propres ordis (et meme CPUs maintenant !)
- construit le hardware et le software en co optimisation
- c\u2019est un rack entier, peu de bruit de ventilateur
- pas de cable (seul E/S du rack)
- donc ils ont leurs propres switch
- compliqu\xe9 de diff\xe9rencier l\u2019avantage du d\xe9savantage
Les le\xe7ons tir\xe9es de 20 de Site Reliability Engineering par Google https://sre.google/resources/practices-and-processes/twenty-years-of-sre-lessons-learned/
- Le risque d\u2019une mitigation doit \xeatre proportionn\xe9 \xe0 la gravit\xe9 de la panne
- Les m\xe9canismes de r\xe9cup\xe9ration doivent \xeatre enti\xe8rement test\xe9s avant une urgence
- Canarisez tous les changements
- Avoir un \u201cgros bouton rouge\u201d
- Les tests unitaires ne suffisent pas, des tests d\u2019int\xe9gration sont \xe9galement n\xe9cessaires
- CANAUX DE COMMUNICATION ! ET CANAUX DE SECOURS !! ET DES SAUVEGARDES POUR CES CANAUX DE SECOURS !!!
- Modes de d\xe9gradation intentionnelle des performances
- Tester la r\xe9silience aux catastrophes
- Automatisez vos mitigations
- R\xe9duisez le temps entre les d\xe9ploiements, afin de diminuer la probabilit\xe9 que le d\xe9ploiement tourne mal
- Une seule version mat\xe9rielle globale est un point de d\xe9faillance unique
Karpenter une evolution de autoscaler pour les cluster kubernetes https://blog.ippon.fr/2023/11/07/mettez-a-lechelle-vos-clusters-kubernetes-de-maniere-efficace-et-faites-des-economies-avec-karpenter/
- fonctionne uniquement pour AWS aujourd\u2019hui et un projet AWS donc a voir la portabilit\xe9
- permet d\u2019ajouter ou de supprimer des noeuds au cluster kubernetes en dynamique pour right sizer ses clusters
- bypass les API kube pour la creation d\u2019instance et utilise les APIs AWS EC2 directement
- permet des noeuds h\xe9t\xe9rog\xe8nes (pas homog\xe8ne comme autoscaler)
- et se right size rapidement (e.g.\xa030s pour \xe9teindre un noeud)
- besoin d\u2019applis cloud native par elles vont \xeatre balad\xe9es
Web
Deno! https://www.infoq.com/news/2023/10/deno-jupyter-integration
- Dev experience, jupyter notebook integration
- Am\xe9liorations sur Visual Studio Code extension (compatible avec NodeJS)
- Exec native sur Jupyter de javascript et typescript permet d\u2019effectuer des analyses de donn\xe9es, construire des mod\xe8les d\u2019apprentissage automatique et g\xe9n\xe9rer des rapports interactifs avec Deno
- Visualisation dynamiques avec D3 dans le notebook
- Connection \xe0 Deno KV
- Plusieurs am\xe9liorations sur le testing, APIs etc
Lancement du nouveau site angular.dev et de la version v17 du framework https://blog.angular.io/announcing-angular-dev-1e1205fa3039
Outillage
Il est possible de signer et notariser des applications pour macOS sur des machines non-Apple https://gregoryszorc.com/blog/2022/08/08/achieving-a-completely-open-source-implementation-of-apple-code-signing-and-notarization/
- impl\xe9ment\xe9 en Rust
- pratique pour son pipeline CI/CD bas\xe9 sur Linux
- a priori, il y a des outils similaires pour le monde Windows, qui permet de signer sur une machine non-Windows https://github.com/mtrojnar/osslsigncode
Lors de son Github Universe, Copilot fait le show ! https://github.blog/2023-11-08-universe-2023-copilot-transforms-github-into-the-ai-powered-developer-platform/
- Copilot Chat sera GA en d\xe9cembre, il utilise GPT4, il permet de guider le d\xe9veloppeur, de g\xe9n\xe9rer du code, de d\xe9tecter des erreurs et aide \xe0 les corriger, d\u2019expliquer le code
- Int\xe9gration \xe0 venir de Copilot Chat dans les IDEs de JetBrains
- Copilot Chat va \xeatre int\xe9grer sur github.com et dans l\u2019appli mobile aussi
- Introduction de GitHub Copilot Enterprise pour les soci\xe9t\xe9s, qui permettra de sp\xe9cialis\xe9 le mod\xe8le sur le code de l\u2019entreprise
- Int\xe9gration de Copilot ans Workspace, donc quand on voudra adresser un bug, cr\xe9er un pull request, Copilot pourra nous aider \xe9tape par \xe9tape, sugg\xe9rer un plan d\u2019action
- Copilot Enterprise permettra de faire des recherches avec le contexte entier du code de l\u2019entreprise, donc id\xe9alement meilleur que le focus sur un repo de Copilot
Un guide sur OpenRewrite https://feeds.feedblitz.com//819402521/0/baeldungA-Guide-to-OpenRewrite
- permet de refactorer le code via des r\xe8gles
- mise a jour de dependences, enlever usage d\u2019api d\xe9pr\xe9ci\xe9es, migration d\u2019une biblioth\xe8que a une autre, etc
- migration java, migration framework, transformations sp\xe9cifiques a votre soci\xe9t\xe9
- OpenRewrite vient avec un \xe9cosyst\xe8me de recettes
- int\xe9gration via maven ou gradle
- la suite montre des examples de migrations
Architecture
Article interessant sur Monolithe vs Microservices ! https://www.infoq.com/articles/monolith-versus-microservices/
- Le d\xe9bat monolithe vs microservices. Les monolithes reviennent, par exemple spring-modulith https://spring.io/projects/spring-modulith
- Les microservices sont la solution \xe0 la complexit\xe9 plut\xf4t que la cause de celle-ci. Toutes les applications deviendront complexes ; au-del\xe0 d\u2019un certain point, les microservices nous aideront \xe0 g\xe9rer cette complexit\xe9.
- Les microservices comportent des co\xfbts et des avantages. Si les avantages ne l\u2019emportent pas sur les co\xfbts, vous n\u2019aurez pas une exp\xe9rience positive avec les microservices.
- Nous pouvons arr\xeater notre transition vers les microservices quelque part au milieu du spectre, ce que j\u2019aime appeler le mod\xe8le hybride. \xc0 ce stade, nous pouvons avoir quelques gros services m\xe9lang\xe9s \xe0 quelques petits services. Nous pouvons avoir le meilleur des deux mondes : la simplicit\xe9 et la commodit\xe9 du monolithe combin\xe9es \xe0 la flexibilit\xe9 et \xe0 la scalabilit\xe9 des microservices.
- Il n\u2019y a pas de choix binaire entre monolithique et microservices. En r\xe9alit\xe9, il existe un spectre de possibilit\xe9s entre les deux. Si vous vous \xeates fix\xe9 \xe0 l\u2019une des extr\xe9mit\xe9s du spectre, vous passez \xe0 c\xf4t\xe9 de la grande vari\xe9t\xe9 d\u2019architectures interm\xe9diaires.
- Nous devrions cesser de parler de monolithe contre microservices et plut\xf4t avoir un d\xe9bat plus nuanc\xe9 sur la taille appropri\xe9e des services.
- les microservices mettent sur le devant de la scene la complexification du syst\xe8me, les monolithes le cachent sous le tapis
- les microservices permette de manager cette complexit\xe9
- automatisation est la cl\xe9s dans l\u2019adoption des microservices
- bien aligner son architecture et son domain ou alors la douleur arrive
S\xe9curit\xe9
Une explication de la CVE sur HTTP/2 https://quarkus.io/blog/cve-2023-44487/
- en fonction de l\u2019impl\xe9mentation, le risque est plus ou moins grand (de plus de CPU a un full DDOS)
- au c\u0153ur du probl\xe8me est la capacit\xe9 d\u2019envoyer pleins de requ\xeates en parall\xe8le sur le meme pipeline HTTP/2
- les serveurs ont en general une limite au streams en parall\xe8le (genre 100)
- la CVE est exploit\xe9e cote client en ouvrant et fermant rapidement une stream, c\u2019est plus l\xe9ger sur le client, le serveur a un delai dans sont processing
- ce qui permet de bypasser la limit et affamer les resources du serveur
- c\u2019es catastrophique en cas de one thread per request (thread starvation)
- en event loop, c\u2019est une queue plus grande (donc le cas de quarkus)
- pour mitiger, quarkus regarde le nombre de stream close requests par seconde pour d\xe9tecter les abus (200 requ\xeates de fermeture sur une fetnetre de 30s)
Data / IA
Elon Musk annonce son LLM, appel\xe9 Grok https://x.ai/
- Connectivit\xe9 en temps r\xe9el avec Twitter !
- Fen\xeatre de contexte de 25k characters
- Le LLM garderait le contexte de la conversation (au lieu d\u2019avoir \xe0 toujours renvoyer toute la discussion dans le contexte, \xe0 cause du c\xf4t\xe9 sans \xe9tat des LLMs habituellement)
- Le style, la personnalit\xe9, du LLM, serait assez humoristique, voire carr\xe9ment sarcastique, \xe0 la Musk\u2026 et d\xe9j\xe0 sur Twitter une personne commentait en disant que c\u2019\xe9tait le LLM \u201canti-woke\u201d
- Grok serait disponible pour les utilisateurs payants de Twitter
OpenAI fait 4 nouvelles annonces https://openai.com/blog/new-models-and-developer-products-announced-at-devday
- GPT-4 Turbo : leur dernier et plus puissant LLM. Il offre un contexte de 128k tokens, des prix plus bas et des quotas plus \xe9lev\xe9s. 128k c\u2019est comme Claude
- Assistants API : une solution permettant de cr\xe9er des mini assistants personnalis\xe9s et de les exposer via une API. L\u2019objectif est de faciliter l\u2019int\xe9gration des solutions GenAI dans les applications, avec des fonctionnalit\xe9s de gestion des conversations, d\u2019interpr\xe9tation de code et de RAG.
- API pour DALL\u2022E 3 : un mod\xe8le de 3e g\xe9n\xe9ration pour la g\xe9n\xe9ration d\u2019images.
- GPTs : des versions personnalis\xe9es de ChatGPT, faciles \xe0 d\xe9velopper m\xeame sans comp\xe9tences en programmation. Une place de march\xe9 sera disponible pour mon\xe9tiser ces \u201cGPTs\u201d.
- Merci Didier et son X de r\xe9sumer
- un article plus complet de SFEIR https://www.sfeir.dev/ia/quand-lesprit-de-noel-sinvite-a-lopenai-devday/
- Protection juridique en cas d\u2019attaque de droits d\u2019auteur
Loi, soci\xe9t\xe9 et organisation
Les acteurs et la IA, deal pour arr\xeater a gr\xe8ve https://www.bbc.com/news/entertainment-arts-67364587
- Les acteurs et les grands studios d\u2019Hollywood ont conclu un accord le 8 novembre pour mettre fin \xe0 une gr\xe8ve qui a paralys\xe9 la production de films et de s\xe9ries aux \xc9tats-Unis pendant plusieurs mois.
- L\u2019accord pr\xe9voit une nouvelle convention collective de trois ans pour les acteurs (hormis les vedettes, les acteurs n\u2019arrivent pas \xe0 gagner leur vie avec le streaming)
- Revalorisation importante des salaires minimums ainsi que des des garde-fous contre le IA. Un syst\xe8me de primes pour les rediffusions en streaming.
- Double mouvement social historique : acteurs sont entr\xe9s en gr\xe8ve mi-juillet, les sc\xe9naristes depuis d\xe9but mai. La paralysie du secteur a co\xfbt\xe9 au moins 6 milliards de dollars.
- Les acteurs craignaient que les studios utilisent l\u2019IA pour cloner leur voix et leur image, les r\xe9utiliser \xe0 perp\xe9tuit\xe9, sans compensation ni consentement. Les conditions entourant les droits des studios sur l\u2019image des acteurs stars apr\xe8s leur mort a \xe9t\xe9 n\xe9goci\xe9.
Chute de WeWork, d\xe9p\xf4t de bilan https://www.maddyness.com/2023/11/06/wework-impact-coworking-france/
- La disparition annonc\xe9e du g\xe9ant mondial du coworking marque un tournant pour le secteur, y compris en France.
- Asphyxi\xe9 par une dette de pr\xe8s de 3 milliards de dollars
- Chute interminable entam\xe9e en 2019
- WeWork \xe9tait le leader mondial du secteur et, de par son statut de pionnier du coworking
- WeWork propose 15 \xe9tablissements en France, tous situ\xe9s \xe0 Paris
- Pourtant la demande pour le coworking ne cesse d\u2019exploser
- Startups domicilient leur si\xe8ge (Qonto par exemple) dans un espace de co-working
- Le mod\xe8le du coworking n\u2019est pas remis en cause. WeWork, c\u2019est un ph\xe9nom\xe8ne \xe0 part. Il y a eu une mauvaise gestion de d\xe9part d\u2019une licorne qui cro\xeet \xe0 toute vitesse, en ne faisant absolument pas attention \xe0 son mod\xe8le \xe9conomique de base (dit Cl\xe9ment Alteresco CEO de Morning)
- Mauvaise publicit\xe9 pour le march\xe9 et les concurrents, mais consid\xe8rent qu\u2019ils vont s\u2019en sortir
Les fran\xe7ais, les utilisateurs twitter le plus violents d\u2019Europe? https://www.huffingtonpost.fr/france/article/les-francais-sont-les-utilisateurs-de-twitter-les-plus-violents-d-europe_225331.html#:~:text=2023%2023%3A57-,Les%20Fran%C3%A7ais%20sont%20les%20utilisateurs%20de%20Twitter%20les%20plus%20violents,\u2019Allemagne%20et%20l\u2019Espagne.
- Les signalements de contenus, suppressions et suspensions pour propos violents et haineux au sein de X sont les plus nombreux en France, loin devant l\u2019Allemagne et l\u2019Espagne.
- 16.288 suppressions de messages contre 7.160 en Allemagne et 7.743 en Espagne
- X explique avoir une \xab \xe9quipe internationale et inter-fonctionnelle \xbb de \xab mod\xe9rateurs humains \xbb, qui travaillent \xab 24 heures sur 24 avec la capacit\xe9 de couvrir plusieurs langues \xbb.
Sam Altman PDG d\u2019OpenAI est d\xe9barqu\xe9 par son conseil de surveillance https://thealgorithmicbridge.substack.com/p/why-openai-fired-sam-altman-and-what
Les groupes \u201cResponsible AI\u201d chez Google, Microsoft et plus r\xe9cemment Meta https://www.theverge.com/2023/11/18/23966980/meta-disbanded-responsible-ai-team-artificial-intelligence?utm_source=substack&utm_medium=email sont d\xe9truits
- meme d\xe9bat chez OpenAI en fait.
- difficile de comprendre les raisons, \xe0 part que la course s\u2019est acc\xe9l\xe9r\xe9e
- l\u2019article site les gouvernements qui veulent r\xe9guler mais je ne comprends pas en quoi cela influence
Conf\xe9rences
Retrouvez les conf\xe9rences sur le site Developers Conferences Agenda/List par Aur\xe9lie Vache.
Nous contacter
Pour r\xe9agir \xe0 cet \xe9pisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs
Contactez-nous via twitter https://twitter.com/lescastcodeurs
Faire un crowdcast ou une crowdquestion
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Tous les \xe9pisodes et toutes les infos sur https://lescastcodeurs.com/