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
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
66
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
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
7
7.1k
A Gentle Introduction to Transformers
keio_smilab
PRO
1
230
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
5
1.1k
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
4
22k
生成AIの利用とセキュリティ /gen-ai-and-security
mizutani
1
1.2k
vLLM Community Meetup Tokyo #3 オープニングトーク
jpishikawa
0
120
製造業ドメインにおける LLMプロダクト構築: 複雑な文脈へのアプローチ
caddi_eng
1
460
Startups on Rails: 2026 at RubyConf Thailand
irinanazarova
0
110
マルチロールEMが実践する「組織のレジリエンス」を高めるための組織構造と人材配置戦略
coconala_engineer
3
430
越境する組織づくり ─ 多様性を前提にしたチームビルディングとリードの実践知
kido_engineer
2
110
EMからVPoEを経てCTOへ:マネジメントキャリアパスにおける葛藤と成長
kakehashi
PRO
7
890
AIエージェント・エコノミーの幕開け 〜 オープンプロトコルが変えるビジネスの未来 〜
shukob
0
100
Featured
See All Featured
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
67
37k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
880
Facilitating Awesome Meetings
lara
57
6.8k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
280
My Coaching Mixtape
mlcsv
0
64
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
Amusing Abliteration
ianozsvald
0
120
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
260
Tell your own story through comics
letsgokoyo
1
830
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Side Projects
sachag
455
43k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
87
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