🔵 عنوان مقاله
What is sync.Pool and How to Use It Properly
🟢 خلاصه مقاله:
این مطلب دو بخش کلیدی از دنیای Go را پوشش میدهد: نخست، sync.Pool بهعنوان سازوکاری برای استفاده مجدد از اشیای موقت با هدف کاهش allocation و فشار بر GC. استفاده درست از آن یعنی: فقط برای اشیای کوتاهعمر و بدون مالکیت منابع خارجی، تعریف New برای ساخت در صورت خالی بودن، مقداردهی/Reset قبل از Put، و عدم اتکا به ماندگاری یا اندازه Pool. نتیجهگیری مهم: sync.Pool جایگزین cache پایدار نیست و باید با بنچمارکگیری مزیتش را سنجید. دوم، مقاله Jesús Espino در Devtrovert درباره Scanner در کامپایلر Go توضیح میدهد که چگونه متن کد را به token تبدیل میکند، شناسهها، لیترالها و عملگرها را میشناسد، با فاصلهها و کامنتها و خطاها برخورد میکند و خروجی را به parser میسپارد. ترکیب این دو دیدگاه، هم به بهینهسازی عملکرد برنامهها کمک میکند و هم درک عمیقتری از فرایند پردازش کد در Go میدهد.
#Go #Golang #syncPool #Compiler #Scanner #Performance #Concurrency #MemoryManagement
🟣لینک مقاله:
https://golangweekly.com/link/176904/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
What is sync.Pool and How to Use It Properly
🟢 خلاصه مقاله:
این مطلب دو بخش کلیدی از دنیای Go را پوشش میدهد: نخست، sync.Pool بهعنوان سازوکاری برای استفاده مجدد از اشیای موقت با هدف کاهش allocation و فشار بر GC. استفاده درست از آن یعنی: فقط برای اشیای کوتاهعمر و بدون مالکیت منابع خارجی، تعریف New برای ساخت در صورت خالی بودن، مقداردهی/Reset قبل از Put، و عدم اتکا به ماندگاری یا اندازه Pool. نتیجهگیری مهم: sync.Pool جایگزین cache پایدار نیست و باید با بنچمارکگیری مزیتش را سنجید. دوم، مقاله Jesús Espino در Devtrovert درباره Scanner در کامپایلر Go توضیح میدهد که چگونه متن کد را به token تبدیل میکند، شناسهها، لیترالها و عملگرها را میشناسد، با فاصلهها و کامنتها و خطاها برخورد میکند و خروجی را به parser میسپارد. ترکیب این دو دیدگاه، هم به بهینهسازی عملکرد برنامهها کمک میکند و هم درک عمیقتری از فرایند پردازش کد در Go میدهد.
#Go #Golang #syncPool #Compiler #Scanner #Performance #Concurrency #MemoryManagement
🟣لینک مقاله:
https://golangweekly.com/link/176904/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
YouTube
What Is sync.Pool in Go & How to Use It Properly
We'll not only talk about what sync.Pool is, but also look into how empty interfaces and slices behave under the hood, so we can understand how to use sync.Pool correctly in real situations.
Keep in mind this video is for learning purposes, so NOT every…
Keep in mind this video is for learning purposes, so NOT every…
🔵 عنوان مقاله
Understanding the Go Compiler: The Scanner
🟢 خلاصه مقاله:
این مقاله، با معرفی نقش Scanner در Go Compiler، توضیح میدهد که چگونه متن خام به توکنهای دقیق و موقعیتدار تبدیل میشود تا مراحل بعدی مانند parser و type checker بتوانند روی آن کار کنند. تمرکز مقاله بر سادگی قواعد واژگانی Go، نبود preprocessor و سازوکار semicolon insertion است که باعث میشود کد خواناتر و ابزارها قابلاعتمادتر باشند.
نویسنده انواع توکنها را مرور میکند: شناسهها با پشتیبانی Unicode، اعداد صحیح و اعشاری و imaginary با امکان استفاده از underscore، رشتههای interpreted و raw، و rune literals. همچنین به نحوهی تشخیص و نادیدهگیری یا نگهداری کامنتها بر حسب نیاز ابزار اشاره میکند. بخشی هم به گزارش خطا و ادامهی اسکن در مواجهه با ورودیهای نامعتبر میپردازد و اهمیت go/token برای نگهداری دقیق موقعیتها را توضیح میدهد.
در پایان، با معرفی بستههای go/scanner و go/token، مسیر ساخت ابزارهایی مثل linter و formatter نشان داده میشود و تفاوت آنها با پیادهسازی داخلی کامپایلر بیان میگردد. نتیجه اینکه طراحی خطی و سادهی Scanner، سرعت ابزار Go و کیفیت پیامهای خطا و تحلیلهای ایستا را ممکن کرده است.
#Go #Golang #GoCompiler #Scanner #Lexer #Parsing #StaticAnalysis #ProgrammingLanguages
🟣لینک مقاله:
https://golangweekly.com/link/176905/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Understanding the Go Compiler: The Scanner
🟢 خلاصه مقاله:
این مقاله، با معرفی نقش Scanner در Go Compiler، توضیح میدهد که چگونه متن خام به توکنهای دقیق و موقعیتدار تبدیل میشود تا مراحل بعدی مانند parser و type checker بتوانند روی آن کار کنند. تمرکز مقاله بر سادگی قواعد واژگانی Go، نبود preprocessor و سازوکار semicolon insertion است که باعث میشود کد خواناتر و ابزارها قابلاعتمادتر باشند.
نویسنده انواع توکنها را مرور میکند: شناسهها با پشتیبانی Unicode، اعداد صحیح و اعشاری و imaginary با امکان استفاده از underscore، رشتههای interpreted و raw، و rune literals. همچنین به نحوهی تشخیص و نادیدهگیری یا نگهداری کامنتها بر حسب نیاز ابزار اشاره میکند. بخشی هم به گزارش خطا و ادامهی اسکن در مواجهه با ورودیهای نامعتبر میپردازد و اهمیت go/token برای نگهداری دقیق موقعیتها را توضیح میدهد.
در پایان، با معرفی بستههای go/scanner و go/token، مسیر ساخت ابزارهایی مثل linter و formatter نشان داده میشود و تفاوت آنها با پیادهسازی داخلی کامپایلر بیان میگردد. نتیجه اینکه طراحی خطی و سادهی Scanner، سرعت ابزار Go و کیفیت پیامهای خطا و تحلیلهای ایستا را ممکن کرده است.
#Go #Golang #GoCompiler #Scanner #Lexer #Parsing #StaticAnalysis #ProgrammingLanguages
🟣لینک مقاله:
https://golangweekly.com/link/176905/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Internals for interns
Understanding the Go compiler: The Scanner | Internals for interns
This is part of a series where I’ll walk you through the entire Go compiler, covering each phase from source code to executable. If you’ve ever wondered what happens when you run go build, you’re in the right place.
Note: This article is based on Go 1.25.3.…
Note: This article is based on Go 1.25.3.…