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
Ian Eyberg
July 10, 2015
Technology
390
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
77
Challenges and Opportunities - Unikernels in HPC && Cloud
eyberg
0
120
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
280
You Say MicroServices - I say Unikernels
eyberg
1
220
The Current State of C++ Unikernels
eyberg
1
270
UniKernel Workflows
eyberg
0
110
Other Decks in Technology
See All in Technology
『三匹の子ぶた』から学ぶネットワークセキュリティの昔と今 / Network Security: Then and Now Through the Lens of The Three Little Pigs
nttcom
1
1.7k
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.1k
QAタスクをスキル化したいときに考えること
aomoriringo
0
180
取引先から届く 「セキュリティチェックシート」の読み解き方
kamadamakoto
0
110
【CEDEC2026】次世代デジタルカードゲームのサーバー設計と運用 〜『Shadowverse: Worlds Beyond』の舞台裏~
cygames
PRO
0
820
[ChatGPT Work LT]事務作業が苦手な人のための バックオフィスの「半」自動化
chimaki_iot
0
190
モダンフロントエンド 開発研修
recruitengineers
PRO
1
290
【CEDEC2026】コードレビュー支援ツール開発から学ぶ:LLMを用いた業務システムの実践的な運用設計と誤出力対策
cygames
PRO
0
530
[しろおび夏祭り2026] チャットするAIから、作業するAIへ - 使われ方の変化と、その裏側で起きていること
kk0n
0
1.6k
PLaMo 3.0 Primeの構造化出力サポート
pfn
PRO
0
180
制約理論(ToC)入門 2026版
recruitengineers
PRO
2
320
モノリス Rails でも日中に rails db:migrate を走らせたい! / Daytime rails db:migrate on Monolithic Rails!
euglena1215
3
340
Featured
See All Featured
Building Adaptive Systems
keathley
44
3.2k
4 Signs Your Business is Dying
shpigford
187
22k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Code Review Best Practice
trishagee
74
20k
Visualization
eitanlees
152
17k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
560
[SF Ruby Conf 2025] Rails X
palkan
2
1.2k
Making Projects Easy
brettharned
120
6.7k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
360
A Tale of Four Properties
chriscoyier
163
24k
Faster Mobile Websites
deanohume
310
32k
Code Reviewing Like a Champion
maltzj
528
40k
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