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
Compile Time Code Weaving with Go
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Ian Eyberg
July 10, 2015
Technology
0
380
Compile Time Code Weaving with Go
Goweave is a project to implement compile-time code weaving with go.
Ian Eyberg
July 10, 2015
Tweet
Share
More Decks by Ian Eyberg
See All by Ian Eyberg
Creating Open Source Unikernel Packages
eyberg
0
62
Challenges and Opportunities - Unikernels in HPC && Cloud
eyberg
0
100
Climbing Out From the Digital Mud with Unikernels - HL2017
eyberg
0
180
Using Unikernels in Production Today
eyberg
0
240
Adventures In Building Unikernel Clouds
eyberg
0
120
No Parachute Introduction into Unikernel Orchestration
eyberg
0
270
You Say MicroServices - I say Unikernels
eyberg
1
220
The Current State of C++ Unikernels
eyberg
1
260
UniKernel Workflows
eyberg
0
110
Other Decks in Technology
See All in Technology
Introduction to Bill One Development Engineer
sansan33
PRO
0
350
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
17k
【NGK2026S】日本株のシステムトレードに入門してみた
kazuhitotakahashi
0
250
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
10
73k
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.9k
最速で価値を出すための プロダクトエンジニアのツッコミ術
kaacun
1
430
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1k
Zephyr RTOS の発表をOpen Source Summit Japan 2025で行った件
iotengineer22
0
300
入社1ヶ月でデータパイプライン講座を作った話
waiwai2111
1
200
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
3.8k
Amazon Bedrock AgentCore EvaluationsでAIエージェントを評価してみよう!
yuu551
0
200
AIとともに歩む情報セキュリティ / Information Security with AI
kanny
4
2.8k
Featured
See All Featured
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
55
49k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
170
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.2k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
87
We Have a Design System, Now What?
morganepeng
54
8k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
53
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
130
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.2k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
370
The Art of Programming - Codeland 2020
erikaheidi
57
14k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.3k
A better future with KSS
kneath
240
18k
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