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
1
86
Gratatouille: metaprogramming for your build-logic
mbonnin
April 14, 2024
Tweet
Share
More Decks by mbonnin
See All by mbonnin
Construisez votre bibliothèque Java/Kotlin
martinbonnin
1
71
Building libraries for the next 25 years
martinbonnin
1
34
GraphQL 💙 Kotlin, 2024 edition
martinbonnin
0
42
GraphQL_nullability__state_of_the_union.pdf
martinbonnin
0
19
Paris Kotlin Meetup de mai: Gradle 💙 Kotlin
martinbonnin
2
50
Offline and Reactive apps with Apollo Kotlin
martinbonnin
0
42
What's new in Apollo Kotlin 3
martinbonnin
1
160
Offline and Reactive apps with Apollo Kotlin
martinbonnin
2
220
Everything you didn't want to know about the Kotlin DSL
martinbonnin
3
610
Other Decks in Programming
See All in Programming
Програмиране с Rust, ФМИ, 2024
nikolads
0
120
いかにして不足・不整合なくデータ移行したか
tjmtmmnk
1
910
Integrating AI in Your Enterprise Java Applications
ivargrimstad
0
870
個人開発で使ってるやつを紹介する回
yohfee
1
730
2024-10-02 dev2next - Application Observability like you've never heard before
jonatan_ivanov
0
200
rtcamp 10 (vk-illuminati)
yumcyawiz
1
210
Vaporモードを大規模サービスに最速導入して学びを共有する
kazukishimamoto
3
2.1k
Mercari AI/LLM Hackathon TeamBの発表資料
imaikosuke
0
190
sqlcを利用してsqlに型付けを
kamiyam
0
250
tsconfig.jsonの最近の新機能 ファイルパス編
uhyo
7
1.9k
学生の時に開催したPerl入学式をきっかけにエンジニアが組織に馴染むために勉強会を主催や仲間と参加して職能間の境界を越えていく
ohmori_yusuke
2
330
Going Staff - Keynote edition
pragtob
0
360
Featured
See All Featured
Building Your Own Lightsaber
phodgson
102
6k
Done Done
chrislema
181
16k
How STYLIGHT went responsive
nonsquared
95
5.1k
Speed Design
sergeychernyshev
23
550
The Language of Interfaces
destraynor
154
24k
Side Projects
sachag
452
42k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
31
1.7k
Building Better People: How to give real-time feedback that sticks.
wjessup
363
19k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
41
9.2k
GraphQLの誤解/rethinking-graphql
sonatard
66
9.9k
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