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 »

À 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,…

Les Cast Codeurs Podcast

Épisodes similaires

Tous les épisodes de Les Cast Codeurs Podcast · Plus de podcasts Actualités