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
110
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
24
Construisez votre bibliothèque Java/Kotlin
martinbonnin
2
79
Building libraries for the next 25 years
martinbonnin
2
40
GraphQL 💙 Kotlin, 2024 edition
martinbonnin
1
50
GraphQL_nullability__state_of_the_union.pdf
martinbonnin
1
23
Paris Kotlin Meetup de mai: Gradle 💙 Kotlin
martinbonnin
3
57
Offline and Reactive apps with Apollo Kotlin
martinbonnin
1
44
What's new in Apollo Kotlin 3
martinbonnin
2
180
Offline and Reactive apps with Apollo Kotlin
martinbonnin
3
230
Other Decks in Programming
See All in Programming
CI改善もDatadogとともに
taumu
0
120
データベースのオペレーターであるCloudNativePGがStatefulSetを使わない理由に迫る
nnaka2992
0
170
パスキーのすべて ── 導入・UX設計・実装の紹介 / 20250213 パスキー開発者の集い
kuralab
3
790
時計仕掛けのCompose
mkeeda
1
300
動作確認やテストで漏れがちな観点3選
starfish719
6
1k
第3回関東Kaggler会_AtCoderはKaggleの役に立つ
chettub
3
1k
Rubyで始める関数型ドメインモデリング
shogo_tksk
0
110
Introduction to kotlinx.rpc
arawn
0
700
クリーンアーキテクチャから見る依存の向きの大切さ
shimabox
2
460
Pythonでもちょっとリッチな見た目のアプリを設計してみる
ueponx
1
570
ファインディLT_ポケモン対戦の定量的分析
fufufukakaka
0
740
GitHub Actions × RAGでコードレビューの検証の結果
sho_000
0
270
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.2k
How to train your dragon (web standard)
notwaldorf
91
5.8k
GitHub's CSS Performance
jonrohan
1030
460k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Docker and Python
trallard
44
3.3k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Building an army of robots
kneath
303
45k
Side Projects
sachag
452
42k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Rebuilding a faster, lazier Slack
samanthasiow
80
8.8k
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