In the previous blog LLVM IR Emission(1): Overall and Type Emission, we talks about the overall about llvm ir emission. In this blog, I will continue to introduce the code LLVM IR generation for the statement and declaration.
Profile is a common concept among programming languages, it helps to access the program status like CPU, memory usage, and so forth. You may assume that only the languages with runtime could profile, but that's totally wrong. Languages without runtime like C, C++ could profile themselves as well by diverse approaches. For example, the compiler could insert some code instructions for profiling, or the profiler could interrupt the program to record its states periodically.
Half done as I don't have enough knowledge about Go runtime management.
This is a keynote blog about the tracing system, including the tracing platform, sdk, the whole work flow, and the problem it wants to solve. It's not a manual or a very detail page to introduce how tracing works.
This blog only concerns mutex.go. It introduces the internal logic of mutex and explains why the mutex shouldn't be copied and why the mutex isn't reentrant.
This blog is split from the blog of sync mutex implementation due to its length. For better reading experience and clearer organization, it's reasonable to make these background knowledge a separated article.
This blog introduces the language level instructions/functions such as atomic and synchronization, the runtime spinning, sleeping and awoken. It also briefs the memory barrier and assembly code in golang.