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
120
Gratatouille: metaprogramming for your build-logic
mbonnin
April 14, 2024
Tweet
Share
More Decks by mbonnin
See All by mbonnin
Harmonizing APIs, a comparison of GraphQL and OpenAPI through the Spotify API
martinbonnin
1
31
Construisez votre bibliothèque Java/Kotlin
martinbonnin
2
83
Building libraries for the next 25 years
martinbonnin
2
45
GraphQL 💙 Kotlin, 2024 edition
martinbonnin
1
54
GraphQL_nullability__state_of_the_union.pdf
martinbonnin
1
28
Paris Kotlin Meetup de mai: Gradle 💙 Kotlin
martinbonnin
3
61
Offline and Reactive apps with Apollo Kotlin
martinbonnin
1
48
What's new in Apollo Kotlin 3
martinbonnin
2
190
Offline and Reactive apps with Apollo Kotlin
martinbonnin
3
240
Other Decks in Programming
See All in Programming
OpenTelemetryを活用したObservability入門 / Introduction to Observability with OpenTelemetry
seike460
PRO
1
390
Boost Your Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
610
Rollupのビルド時間高速化によるプレビュー表示速度改善とバンドラとASTを駆使したプロダクト開発の難しさ
plaidtech
PRO
1
100
リアクティブシステムの変遷から理解するalien-signals / Learning alien-signals from the evolution of reactive systems
yamanoku
2
1.2k
Go1.24で testing.B.Loopが爆誕
kuro_kurorrr
0
170
CTFのWebにおける⾼難易度問題について
hamayanhamayan
1
1k
小さく段階的リリースすることで深夜メンテを回避する
mkmk884
2
140
AHC 044 混合整数計画ソルバー解法
kiri8128
0
320
PHPUnit 高速化テクニック / PHPUnit Speedup Techniques
pinkumohikan
1
1.3k
SQL Server ベクトル検索
odashinsuke
0
140
The Weight of Data: Rethinking Cloud-Native Systems for the Age of AI
hollycummins
0
220
Signal-Based Data FetchingWith the New httpResource
manfredsteyer
PRO
0
120
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
51
2.4k
Adopting Sorbet at Scale
ufuk
75
9.3k
Building Applications with DynamoDB
mza
94
6.3k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.4k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.5k
Side Projects
sachag
452
42k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.2k
A Modern Web Designer's Workflow
chriscoyier
693
190k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
177
52k
Designing Experiences People Love
moore
141
23k
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