LCC 302 - Amour, Gloire et OpenAI
Épisode de Les Cast Codeurs Podcast par Emmanuel Bernard, Guillaume, Antonio, Arnaud, Katia · 27 novembre 2023 · 1 h 34 min
Dans cet épisode, Emmanuel, Guillaume et Katia abordent les nouveautés Java, le lancement du langage Misty par Douglas Crockford, l'arrivée de WasmGC dans Chrome, la sortie de Spring Framework 6.1, des évolutions dans les bibliothèques comme Vert.x 4.5, et des conseils sur la création de langages de programmation. L'épisode couvre également des actualités dans les domaines de l'infrastructure avec le premier ordinateur cloud commercial par Oxide, des annonces sur les frameworks web comme Angular v17, des réflexions sur les architectures monolithiques versus microservices, et sans oublier le soap Opéra du moins de novembre avec OpenAI en vedette.
Enregistré le 23 novembre 2023
Téléchargement de l'épisode 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'appel a la memoire et les API dites natives passera en target pour JDK 22 avec une façon d'ajouter les appels de méthodes restreintes sans le flag --enable-native-access (via un manifeste dans le JAR)
JDK 22 prévu pour mars 2024
Spring Framework 6.1 est sorti (RC2)
Tomcat a quelques CVE donc mettez à jour
Douglas Crockford, le papa de JSON, sort un nouveau langage dénommé Misty https://www.crockford.com/misty/
Utilise des caractères unicodes pour définir des chaînes de caractères avec des chevrons, ou pour les opérateurs de base (comparison, and/or)
Support de programmation concurrente avec les actors
WasmGC arrive dans Chrome, par l'intermédiaire 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ées pour toutes les architecture cibles (ARM, x86 etc) y compris le JIT, AOT
donc on peut définir comme backend WASM lui meme, c'est l'approche classique
WasmGC définit des structs et des array avec des champs dans lesquels on peut créer des instances, lire/écrire les champs, caster dans d'autres types et ces objects sont managés par WasmGC lui meme. on a un système de type du coup et des relations entre ces types
Donc on représenterait les objets Java en objets Wasm
avantage et inconvenient des deux approches
tous les codes de management d'objets ne sont plus nécessaires (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éfinissent l'instance entière Wasm, donc des gros cycles d'objets ne sont pas GCed
Wasm sandbox empêche d'inspecter la stack et d'éliminer des objets plus efficacement, et il n'y a pas d'API pour aider donc seul WasmGC peut utiliser cet avantage.
un seul GC a des avantages: meilleure gestion de la pression memoire
mais on réutilise le GC du web (genre V8) vs celui de Java. (c'est moins un problème pour les autres langages avec des gc moins sophistiqués)
fragmentation memoire, est plus proéminent quand on a des modules de type C qui peur garder des gros blocs memoire "quasi vide" (opaque). c'est managé plus finement en WasmGC
Sémantiques de langage est plus dur a achevé vu qu'on map en concepts WasmGC, il y a de la transformation.
sémantiques chaine de caractère, nombres, etc peuvent être un peu ajusté
un port utilisant WasmGC n'est pas une réécriture de tout mais un gros morceau de la VM du langage cible est a réécrire
WasmGC peut optimiser comme les patterns en JVM mais en WasmMVP c'est la toolchain avant qui fait le travail d'optimisation (e.g. LLVM)
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'autres optimisation specific a WasmGC comme les escape analysis,
et ils parlent d'optimisations dans V8 pour approcher les appels dynamique a la Java (pas défini a la compilation)
Ecrire un langage de programmation… ça prend du temps… beaucoup de temps https://yorickpeterse.com/articles/a-decade-of-developing-a-programming-language/
Évitez le gradual typing
Évitez le boostrapping de votre compilateur
Évitez d'écrire votre propre générateur de code, linker, etc
Évitez de tergiverser trop longtemps sur la syntaxe
La prise en charge multiplateforme est un défi
Les livres sur les compilateurs compilateurs ne valent pas l'argent que vous dépenserez dessus
Faire grandir et évoluer un langage de programmation est difficile
La meilleure suite de tests est une application réelle
Ne privilégiez pas les performances sur les fonctionnalités.
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 écoute les changements de fichiers
pas mal dans les déploiements 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'écrire 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 événements
le code put faire des future await qui ne bloqueront pas le thread principal
connection SQL dynamique: quand le host change dynamiquement dans l'application
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éparer le buzz de la réalité
on dirait un ordi purpose built avec l'efficience 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'est un rack entier, peu de bruit de ventilateur
pas de cable (seul E/S du rack)
donc ils ont leurs propres switch
compliqué de différencier l'avantage du désavantage
Les leçons tirées de 20 de Site Reliability Engineering par Google https://sre.google/resources/practices-and-processes/twenty-years-of-sre-lessons-learned/
Le risque d'une mitigation doit être proportionné à la gravité de la panne
Les mécanismes de récupération doivent être entièrement testés avant une urgence
Canarisez tous les changements
Avoir un "gros bouton rouge"
Les tests unitaires ne suffisent pas, des tests d'intégration sont également nécessaires
CANAUX DE COMMUNICATION ! ET CANAUX DE SECOURS !! ET DES SAUVEGARDES POUR CES CANAUX DE SECOURS !!!
Modes de dégradation intentionnelle des performances
Tester la résilience aux catastrophes
Automatisez vos mitigations
Réduisez le temps entre les déploiements, afin de diminuer la probabilité que le déploiement tourne mal
Une seule version matérielle globale est un point de défaillance 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'hui et un projet AWS donc a voir la portabilité
permet d'ajouter ou de supprimer des noeuds au cluster kubernetes en dynamique pour right sizer ses clusters
bypass les API kube pour la creation d'instance et utilise les APIs AWS EC2 directement
permet des noeuds hétérogènes (pas homogène comme autoscaler)
et se right size rapidement (e.g. 30s pour éteindre un noeud)
besoin d'applis cloud native par elles vont être baladées
Web
Deno! https://www.infoq.com/news/2023/10/deno-jupyter-integration
Dev experience, jupyter notebook integration
Améliorations sur Visual Studio Code extension (compatible avec NodeJS)
Autres épisodes de « Les Cast Codeurs Podcast »
- LCC 344 - Feature flags - 2^n raisons de ne pas dormir la nuit 20 octobre 2026
- LCC 343 - Trois IA, une seule prise électrique 14 septembre 2026
- LCC 342 - Bun en Rust, TypeScript en Go 21 juillet 2026
- LCC 341 - Endives ou Chicorée ? 22 juin 2026
- LCC 340 - Episode on l'voit on l'voit pas 12 mai 2026
- LCC 339 - Clotûre de Devoxx France 2026 par les cast codeurs 29 avril 2026
- LCC 338 - Le soulèvement des bots de skills 20 mars 2026
- LCC 337 - Datacenters Carrier Class dans l'espace 16 février 2026
- LCC 336 - Interview Kotlin avec Arnaud Giuliani 6 février 2026
- LCC 335 - 200 terminaux en prod vendredi 16 janvier 2026
- LCC 334 - Interview de Muriel Ekovich sur les biais cognitifs 24 décembre 2025
- LCC 333 - A vendre OSS primitif TBE 15 décembre 2025
- LCC 332 - Groquik revient, Emmanuel s'en va 18 novembre 2025
- LCC 331 - Le retour des jackson 5 6 novembre 2025
- LCC 330 - Nano banana l'AI de Julia 15 septembre 2025
À propos du podcast
Les Cast Codeurs : le podcast en français de, par et pour les développeurs. Prenez connaissance des dernières nouvelles de la sphère Java et du développement en général. Plongez sur un sujet précis avec les épisodes interview. Supportez les radotages de vos hôtes : Emmanuel Bernard (ex Red Hat,…
Épisodes similaires
- Acte III: « Tous les policiers sont mobilisés, de la plus petite ville à Paris » assure Agathe Foucault, porte-parole de la police nationale – L'interview politique du week-end
- Récolte, variétés, vente directe : les secrets de La Pommeraie de Charlotte à Cavaillon – Les circuits courts en France
- L’École Française Digitale : un enseignement flexible qui s’adapte | Delphine Ithembela, cofondatrice de l’École Française Digitale – L'invité de PME Radio
- Attentat de Trappes : une idéologie peut-elle facilement conduire à un passage à l’acte – Radical, le podcast de l'Observatoire des radicalités
- Mobilisations : «Je constate une déliquescence de la France, on ne pourra pas revenir en arrière», s'alarme un commercant – Eliot Deval et vous
Tous les épisodes de Les Cast Codeurs Podcast · Plus de podcasts Actualités