Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Gratatouille: metaprogramming for your build-logic
Search
mbonnin
April 14, 2024
Programming
2
150
Gratatouille: metaprogramming for your build-logic
mbonnin
April 14, 2024
Tweet
Share
More Decks by mbonnin
See All by mbonnin
Metadataquoi??
martinbonnin
0
100
Harmonizing APIs, a comparison of GraphQL and OpenAPI through the Spotify API
martinbonnin
1
45
Construisez votre bibliothèque Java/Kotlin
martinbonnin
2
89
Building libraries for the next 25 years
martinbonnin
2
59
GraphQL 💙 Kotlin, 2024 edition
martinbonnin
1
68
GraphQL_nullability__state_of_the_union.pdf
martinbonnin
1
33
Paris Kotlin Meetup de mai: Gradle 💙 Kotlin
martinbonnin
3
68
Offline and Reactive apps with Apollo Kotlin
martinbonnin
1
57
What's new in Apollo Kotlin 3
martinbonnin
2
210
Other Decks in Programming
See All in Programming
Web技術を最大限活用してRAW画像を現像する / Developing RAW Images on the Web
ssssota
2
1.2k
クラシルを支える技術と組織
rakutek
0
190
Let's Write a Train Tracking Algorithm
twocentstudios
0
220
止められない医療アプリ、そっと Swift 6 へ
medley
1
120
非同期jobをtransaction内で 呼ぶなよ!絶対に呼ぶなよ!
alstrocrack
0
520
明日から始めるリファクタリング
ryounasso
0
110
階層構造を表現するデータ構造とリファクタリング 〜1年で10倍成長したプロダクトの変化と課題〜
yuhisatoxxx
3
920
AIエージェント時代における TypeScriptスキーマ駆動開発の新たな役割
bicstone
4
1.5k
ソフトウェア設計の実践的な考え方
masuda220
PRO
3
480
iOSアプリの信頼性を向上させる取り組み/ios-app-improve-reliability
shino8rayu9
0
150
どの様にAIエージェントと 協業すべきだったのか?
takefumiyoshii
2
610
プロダクト開発をAI 1stに変革する〜SaaS is dead時代で生き残るために〜 / AI 1st Product Development
kobakei
0
490
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
79
6k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Statistics for Hackers
jakevdp
799
220k
Context Engineering - Making Every Token Count
addyosmani
5
180
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.2k
Become a Pro
speakerdeck
PRO
29
5.5k
Code Review Best Practice
trishagee
72
19k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Code Reviewing Like a Champion
maltzj
525
40k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
The Invisible Side of Design
smashingmag
301
51k
Being A Developer After 40
akosma
91
590k
Transcript
Gratatouille Webinar - Apr 2024
Hi 👋 🥐
apollographql/apollo-kotlin
Automatic code generation 4 query.graphql schema.graphqls Kotlin
Codegen 5 { sessions { nodes { language title startsAt
speakers { name } } } } class Session(val nodes: List<Node>) class Node( val language: String, val title: String, val startsAt: DateTime, val speakers: List<Speaker> ) class Speaker(val name: String)
6
7
Classloaders 8 • Several ones ◦ root project classloader ◦
subproject classloader ◦ buildSrc classloader • See Crash course in classloaders
9
10 Yes, BUT… johnrengelman/shadow
11 Yes, BUT… • Slow to compile • Duplicates bytecode
• Doesn’t fix everything GradleUp/Gr8 🐘🆙
Other things 12 • Overlapping outputs • Build cache •
Path sensitivity • Manual serialization • Parallel execution • Optional/nullable ⁉ • Type safety
Entering Gratatouille Even more classloaders… ;-)
Live demo?
Status 15 • Mostly proof of concept • Branch of
Apollo working with it • Single artifact mode • Testing