Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Compile Time Code Weaving with Go
Search
Ian Eyberg
July 10, 2015
Technology
400
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Compile Time Code Weaving with Go
Goweave is a project to implement compile-time code weaving with go.
Ian Eyberg
July 10, 2015
More Decks by Ian Eyberg
See All by Ian Eyberg
Creating Open Source Unikernel Packages
eyberg
0
82
Challenges and Opportunities - Unikernels in HPC && Cloud
eyberg
0
130
Climbing Out From the Digital Mud with Unikernels - HL2017
eyberg
0
190
Using Unikernels in Production Today
eyberg
0
260
Adventures In Building Unikernel Clouds
eyberg
0
140
No Parachute Introduction into Unikernel Orchestration
eyberg
0
290
You Say MicroServices - I say Unikernels
eyberg
1
230
The Current State of C++ Unikernels
eyberg
1
280
UniKernel Workflows
eyberg
0
120
Other Decks in Technology
See All in Technology
SAENM ~Jupyterで残すPoCの試行錯誤、未来の自分と仲間を助ける記録!~
terapyon
0
170
野蛮なアジャイル [サイボウズ発!]組織の常識を覆した反骨のスクラム実践記 / Barbaric Agile - Enterprise Agile Study Group
ama_ch
0
120
夫婦で子育てするための育児標準化
codmoninc
PRO
0
550
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
1
210
AI × アーキテクト 第1・2章|生成AIの課題とアーキテクトの素養
daidaidai
1
210
React改造してみた
tsukina_7mochi
0
150
dbt Semantic Layerで進めるenechainのデータ民主化
akizhou
1
170
Refining Active Record
shugo
0
180
S3 Filesで挑む! 八戸せんべい汁の食べ頃問題
usanchuu
0
140
AI駆動で「他アプリの音を加工できる」アプリを作った
satomasahiro2005
0
190
PHPカンファレンス関西の招待状 / Invitation to PHP Conference Kansai
ykanoh
0
220
PagerDuty Tech Hub-鳴らすけれど、人は動かない
ezaki
0
190
Featured
See All Featured
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
540
Being A Developer After 40
akosma
92
590k
BBQ
matthewcrist
90
10k
Optimizing for Happiness
mojombo
378
71k
Music & Morning Musume
bryan
48
7.4k
Chasing Engaging Ingredients in Design
codingconduct
0
370
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Designing for Performance
lara
612
70k
Typedesign – Prime Four
hannesfritz
42
3.2k
How to Talk to Developers About Accessibility
jct
2
590
How STYLIGHT went responsive
nonsquared
100
6.3k
Transcript
Compile Time Code Weaving with Go https://github.com/deferpanic/goweave
I like your software but…
What sucks about Go?
Do you know about aspectj?
Really?
I’m not a code purist
“which is our full time job . write a program
to write a program” - rob pike / gopherfest 2015
None
Go is Actually a Decent Fit
Prior Art go fmt go fix go generate
go fix
No Wrapping I don’t want to update code && leave
the refs in it’s non-trivial I don’t want to hack it in/out each time I could forget in the future or not find all in the past
Aspect Contains behavior that is prominent in many places but
don’t really have anything to do with your business logic. Logging is a canonical example.
Pointcut an expression that details where to apply your behavior
CALL Before, after or wrap around calling a method. EXECUTE Before or after inside executing a method. WITHIN Every single call within a method.
Advice fmt.Println("Hello, 世界")
Logging
Monitoring
Performance Analysis
Debugging & Tracing
Undo Functionality
None
Behavior Mutation
Security
Transactions
Log every call to Itoa
Validation
Time Database Query Latencies
Ensure we log every panic in a goroutine
loom central place for storing .weave files you don’t have
to re-invent the wheel more eyes - better software
it’s really
HACKY
https://github.com/deferpanic/goweave https://github.com/deferpanic/loom