Go Compile Time Instrumentation## Go compile time instrumentation Przemysław Delewski February 18, 2025 Warsaw, Poland ## Agenda 1. Short bio 2. Observability domain 3. OpenTelemetry 4. History of OpenTelemetry go compile time time instrumentation 5. Demo 6. Some code walkthrough 7. Current status and future 8. Questions ## Short bio I’m a founding engineer at Quesma, where we work on a data gateway. Before that, I spent founding member of the OpenTelemetry Go compile-time instrumentation project https://github.com/open-telemetry/community/blob/main/projects/go-compile-instrumentation.md ; } } ## Runtime Error Reporting Runtime error reporting can be used with compile-time error detection void foo() { constexpr auto error = detect_error(); if constexpr (error)0 码力 | 137 页 | 1.70 MB | 1 年前3
Expressive Compile-time Parsers## +23 ## Expressive Compile-time Parsers ## ALON WOLF ## 20 23 October 01 - 06 ## About me ## • Started learning C++ in high school with a passion for making video games ## Microsoft Visual C++ 2010  ## Dive Into Compile-Time Parsers Libraries Use Cases Implementation Techniques Reflection  ## How are we going Demo time  ## Tracing Go function with uprobes  ☐ network packets... • Frameworks. Go bindings. options make it easier: ☐ First approach: C, LLVM/CLANG, tc ☐ Second approach: gobpf, bcc - Non-instrumentation monitoring  for safety-critical applications that we deliver to our /p2_1.jpg) Errors have a high cost, so rigorous testing is a must We use increasingly more compile-time polymorphism and checks Question: how to test if something is compilable in a rigorous way? Imagine get_half_of(T smth) { return smth / T{2}; } Much better! We anyway use it only with float numbers! I’ll go sip a coffee! The code passes all checks and lands to the customer instance template0 码力 | 50 页 | 1.37 MB | 1 年前3
Go 入门指南(The way to Go)Go入门指南 书栈(BookStack.CN) ## 目录 致谢 阅前必读 内容介绍 前言 第1章:Go 语言的起源,发展与普及 1.1 起源与发展 1.2 语言的主要特性与发展的环境和影响因素 第2章:安装与运行环境 2.1 平台与架构 2.2 Go 环境变量 2.3 在 Linux 上安装 Go 2.4 在 Mac OS OS X 上安装 Go 2.5 在 Windows 上安装 Go 2.6 安装目录清单 2.7 Go 运行时(runtime) 2.8 Go 解释器 第3章:编辑器、集成开发环境与其它工具 3.1 Go 开发环境的基本要求 3.2 编辑器和集成开发环境 3.3 调试器 3.4 构建并运行 Go 程序 3.5 格式化代码 3.6 生成代码文档 3 3.7 其它工具 3.8 Go 性能说明 3.9 与其它语言进行交互 第4章:基本结构和基本数据类型 4.1 文件名、关键字与标识符 4.2 Go 程序的基本结构和要素 4.3 常量 4.4 变量 4.5 基本类型和运算符 4.6 字符串 4.7 strings 和 strconv 包 4.8 时间和日期 4.9 指针 第5章:控制结构0 码力 | 466 页 | 4.44 MB | 2 年前3
Go 入门指南(The way to Go)1986bf1/p1_3.jpg) The Way to Go Go入门指南 Ivo Balbaert 著 陈佳桦 译 ## 前言 原文出处:https://github.com/Unknwon/the-way-to-go_ZH_CN ## 用更少的代码,更短的编译时间,创建运行更快的程序,享受更多的乐趣 对于学习 Go 编程语言的爱好者来说,这本书无疑是最适合你的一本书籍,这里包 开发出的软件能够很好地在现代的多核计算机上工作 - 开发出的软件能够很好地在网络环境下工作 • 使人们能够享受软件开发的过程 Go 语言就在这样的环境下诞生了,它让人感觉像是 Python 或 Ruby 这样的动态语言,但却又拥有像 C 或者 Java 这类语言的高性能和安全性。 Go 语言出现的目的是希望在编程领域创造最实用的方式来进行软件开发。它并不是要用奇怪的语法和晦涩难懂的概念来从根本上推翻已有的编程语言,而是建立并改善了 来支持并发和并行编程。 这本书是为那些想要学习 Go 这门全新的,迷人的和充满希望的编程语言的开发者量身定做的。当然,你在学习 Go 语言之前需要具备一些关于编程的基础知识和经验,并且拥有合适的学习环境,但你并不需要对 C 或者 Java 或其它类似的语言有非常深入的了解。 对于那些熟悉 C 或者面向对象编程语言的开发者,我们将会在本书中用 Go 和一些编程语言的相关概念进行比较(书中会使用大家所熟知的缩写0 码力 | 380 页 | 2.97 MB | 2 年前3
1.3 Go coding in go wayprint $ sieve [2..n] [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97] sieve.go//并发组合 (borrowed from Rob Pike’s slide) func generate(ch chan<- int) { for i := 2; ; i++ { channel. go generate(ch) // Start generate() as a subprocess. for { prime := <-ch fmt.Print(prime, "\n") ch1 := make(chan int) go filter(ch, } sieve.go (cont.) From divan’s blog (http://divan.github.io/posts/go_concurrency_visualize/) ’ alt=‘OCR图片’/> 思考 面对同一个问题,来自不同编程语言的程序员给出了思维方式截然不同的解决方法 一定程度上印证了前面的假说:编程语言影响编程思维 避免Go coding in0 码力 | 69 页 | 1.24 MB | 1 月前3共 1000 条- 1
- 2
- 3
- 4
- 5
- 6
- 100
相关搜索词
OpenTelemetryGo compile-time instrumentationinstrumentationASTcontext propagationCompile-Time ValidationMitziconstexprtemplate metaprogrammingC++23Expressive Compile-time ParsersMetaprogramming TricksAPI DesignReflectionDomain Specific LanguageseBPF无仪器监控KprobesuprobesTracepointsC++compile-timecollision detectionreal-time softwarerobotics algorithmsC++20lookup tablesconfiguration fusesUSB descriptors运行时单元测试框架编译时构造静态测试GoogleTest库C++14Go语言安装运行环境基本语法数据类型控制结构函数结构体接口并发编程错误处理网络编程Web应用开发编程语言并发标准库函数式编程Go coding in go way编程语言思维组合goroutines













