🔵 عنوان مقاله
Slice Tails Don't Grow Forever
🟢 خلاصه مقاله:
** این مطلب از Golang Weekly توضیح میدهد که در Go، وقتی از یک slice یک “tail” مثل s[i:] میسازیم، رشد آن به capacity وابسته است و پایدار و بینهایت نیست. تا وقتی capacity اجازه دهد، append روی همان آرایهی پشتی انجام میشود؛ اما بهمحض عبور از capacity، runtime آرایهی جدیدی میسازد و دادهها را کپی میکند، در نتیجه اشتراک حافظه با sliceهای قبلی از بین میرود. این رفتار هم میتواند باعث شگفتی در منطق اشتراکگذاری دادهها شود و هم روی کارایی و مصرف حافظه اثر بگذارد (مثلاً نگهداشتن یک زیر-slice کوچک میتواند یک آرایهی بزرگ را در حافظه زنده نگه دارد). نتیجهٔ عملی: روی رشد بینهایت tail حساب نکنید، خروجی append را یک slice بالقوه با آرایهی پشتی جدید در نظر بگیرید، برای آزادسازی حافظه از copy استفاده کنید، در صورت نیاز capacity مناسب را از قبل با make در نظر بگیرید و حتماً با benchmark تصمیم بگیرید.
#Go #Golang #Slices #Append #MemoryManagement #Performance #GolangWeekly
🟣لینک مقاله:
https://golangweekly.com/link/175065/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Slice Tails Don't Grow Forever
🟢 خلاصه مقاله:
** این مطلب از Golang Weekly توضیح میدهد که در Go، وقتی از یک slice یک “tail” مثل s[i:] میسازیم، رشد آن به capacity وابسته است و پایدار و بینهایت نیست. تا وقتی capacity اجازه دهد، append روی همان آرایهی پشتی انجام میشود؛ اما بهمحض عبور از capacity، runtime آرایهی جدیدی میسازد و دادهها را کپی میکند، در نتیجه اشتراک حافظه با sliceهای قبلی از بین میرود. این رفتار هم میتواند باعث شگفتی در منطق اشتراکگذاری دادهها شود و هم روی کارایی و مصرف حافظه اثر بگذارد (مثلاً نگهداشتن یک زیر-slice کوچک میتواند یک آرایهی بزرگ را در حافظه زنده نگه دارد). نتیجهٔ عملی: روی رشد بینهایت tail حساب نکنید، خروجی append را یک slice بالقوه با آرایهی پشتی جدید در نظر بگیرید، برای آزادسازی حافظه از copy استفاده کنید، در صورت نیاز capacity مناسب را از قبل با make در نظر بگیرید و حتماً با benchmark تصمیم بگیرید.
#Go #Golang #Slices #Append #MemoryManagement #Performance #GolangWeekly
🟣لینک مقاله:
https://golangweekly.com/link/175065/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🤝1
🔵 عنوان مقاله
'We Tried Go's Experimental Green Tea Garbage Collector and It Didn't Help Performance'
🟢 خلاصه مقاله:
** تیم Dolt در Go 1.25 جمعآورنده زباله آزمایشی Green Tea را فعال و ارزیابی کرد، اما در سناریوی خاص خود بهبود محسوسی در کارایی مشاهده نکرد. با این حال، از آنجا که رفتار GC به نوع بار کاری وابسته است و Green Tea همچنان آزمایشی و اختیاری است، توصیه میشود هر تیم آن را در محیط و بنچمارکهای خود امتحان کرده و بر اساس شاخصهای واقعی تصمیم بگیرد.
#Go #Golang #GarbageCollector #GreenTea #Performance #Benchmarking #Dolt #Go1_25
🟣لینک مقاله:
https://golangweekly.com/link/175055/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
'We Tried Go's Experimental Green Tea Garbage Collector and It Didn't Help Performance'
🟢 خلاصه مقاله:
** تیم Dolt در Go 1.25 جمعآورنده زباله آزمایشی Green Tea را فعال و ارزیابی کرد، اما در سناریوی خاص خود بهبود محسوسی در کارایی مشاهده نکرد. با این حال، از آنجا که رفتار GC به نوع بار کاری وابسته است و Green Tea همچنان آزمایشی و اختیاری است، توصیه میشود هر تیم آن را در محیط و بنچمارکهای خود امتحان کرده و بر اساس شاخصهای واقعی تصمیم بگیرد.
#Go #Golang #GarbageCollector #GreenTea #Performance #Benchmarking #Dolt #Go1_25
🟣لینک مقاله:
https://golangweekly.com/link/175055/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Dolthub
We tried Go's experimental Green Tea garbage collector and it didn't help performance
Go 1.25 includes support for an experimental new garbage collector called Green Tea. We tried it out with Dolt's main performance benchmarks and summarize what difference it made (not much).
❤1
🔵 عنوان مقاله
Starving, Sleeping, and Yielding: Understanding Go's Scheduler
🟢 خلاصه مقاله:
** این مقاله توضیح میدهد که چرا درک رفتار همزمان در Go به شناخت زمانبند آن بستگی دارد. زمانبند با مدل G‑M‑P، goroutineها را روی نخهای سیستمعامل اجرا میکند، آنها را هنگام بلاکشدن پارک میکند و با netpoller برای I/O هماهنگ میشود. سه وضعیت کلیدی بررسی میشود: Starvation وقتی رخ میدهد که goroutineهای آماده اجرا بهدلیل لوپهای سنگین CPU، الگوهای ناعادلانه در select، یا قفلها و syscall/cgo طولانی به CPU دسترسی پیدا نمیکنند؛ Sleeping با time.Sleep برای توقف کنترلشده مفید است اما میتواند تأخیر بسازد؛ و Yielding با runtime.Gosched امکان میدهد در حلقههای CPU‑محور به دیگر goroutineها نوبت بدهیم. از Go 1.14 به بعد، preemption غیرهمکارانه کمک کرده، اما حلقههای بدون نقطه توقف هنوز مشکلسازند. راهکارها شامل شکستن کارهای سنگین به بخشهای کوچک، پرهیز از busy‑wait، استفاده از context و timeout، طراحی منصفانه channel/select، کوچک نگهداشتن بخشهای بحرانی و تنظیم GOMAXPROCS است. برای عیبیابی نیز از go tool trace، runtime/trace، pprof و GODEBUG=schedtrace استفاده کنید و فقط در صورت نیاز، sleep یا yield موضعی و مستند به کار ببرید.
#Go #Golang #Concurrency #Scheduler #Goroutines #Performance #Parallelism #Systems
🟣لینک مقاله:
https://golangweekly.com/link/175057/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Starving, Sleeping, and Yielding: Understanding Go's Scheduler
🟢 خلاصه مقاله:
** این مقاله توضیح میدهد که چرا درک رفتار همزمان در Go به شناخت زمانبند آن بستگی دارد. زمانبند با مدل G‑M‑P، goroutineها را روی نخهای سیستمعامل اجرا میکند، آنها را هنگام بلاکشدن پارک میکند و با netpoller برای I/O هماهنگ میشود. سه وضعیت کلیدی بررسی میشود: Starvation وقتی رخ میدهد که goroutineهای آماده اجرا بهدلیل لوپهای سنگین CPU، الگوهای ناعادلانه در select، یا قفلها و syscall/cgo طولانی به CPU دسترسی پیدا نمیکنند؛ Sleeping با time.Sleep برای توقف کنترلشده مفید است اما میتواند تأخیر بسازد؛ و Yielding با runtime.Gosched امکان میدهد در حلقههای CPU‑محور به دیگر goroutineها نوبت بدهیم. از Go 1.14 به بعد، preemption غیرهمکارانه کمک کرده، اما حلقههای بدون نقطه توقف هنوز مشکلسازند. راهکارها شامل شکستن کارهای سنگین به بخشهای کوچک، پرهیز از busy‑wait، استفاده از context و timeout، طراحی منصفانه channel/select، کوچک نگهداشتن بخشهای بحرانی و تنظیم GOMAXPROCS است. برای عیبیابی نیز از go tool trace، runtime/trace، pprof و GODEBUG=schedtrace استفاده کنید و فقط در صورت نیاز، sleep یا yield موضعی و مستند به کار ببرید.
#Go #Golang #Concurrency #Scheduler #Goroutines #Performance #Parallelism #Systems
🟣لینک مقاله:
https://golangweekly.com/link/175057/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Bitfield Consulting
Starving, sleeping, and yielding: understanding Go's scheduler — Bitfield Consulting
Writing concurrent programs is easy, but understanding why they don’t work is much harder. In our continuing tutorial, we’ll learn about when and why goroutines starve, sleep, or yield.
❤1
🔵 عنوان مقاله
Accepted! Go Proposals Distilled
🟢 خلاصه مقاله:
این مجموعه با عنوان Accepted! Go Proposals Distilled خلاصهای روان از پیشنهادهای پذیرفتهشده زبان Go ارائه میکند تا بدون خواندن کل پروپوزالها، سریع از تغییرات نسخههای آینده باخبر شوید. هر پست دلیل پذیرش، تغییرات و کاربرد عملی آن را خلاصه میکند. تاکنون Anton موضوع maphash را پوشش داده و ادامهٔ سری نیز همزمان با پیشروی پیشنهادهای پذیرفتهشده منتشر خواهد شد.
#Go #Golang #GoProposals #GoUpdates #ProgrammingLanguages #DeveloperNews #Maphash
🟣لینک مقاله:
https://golangweekly.com/link/175050/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Accepted! Go Proposals Distilled
🟢 خلاصه مقاله:
این مجموعه با عنوان Accepted! Go Proposals Distilled خلاصهای روان از پیشنهادهای پذیرفتهشده زبان Go ارائه میکند تا بدون خواندن کل پروپوزالها، سریع از تغییرات نسخههای آینده باخبر شوید. هر پست دلیل پذیرش، تغییرات و کاربرد عملی آن را خلاصه میکند. تاکنون Anton موضوع maphash را پوشش داده و ادامهٔ سری نیز همزمان با پیشروی پیشنهادهای پذیرفتهشده منتشر خواهد شد.
#Go #Golang #GoProposals #GoUpdates #ProgrammingLanguages #DeveloperNews #Maphash
🟣لینک مقاله:
https://golangweekly.com/link/175050/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
antonz.org
Accepted! Go proposals distilled
Stay updated on changes coming in future Go releases.
👍1🎉1 1
🔵 عنوان مقاله
take control with Tuple
🟢 خلاصه مقاله:
این مطلب از Golang Weekly نشان میدهد چگونه بهکارگیری سنجیده Tuple میتواند به توسعهدهندگان Go کمک کند روی جریان داده، مدیریت خطا و همزمانی کنترل بیشتری داشته باشند. در این رویکرد، Tuple راهی فشرده برای بستن چند مقدار مرتبط در یک واحد نوعدار است که با تکیه بر جنریکها، ضمن کاهش کد تکراری، نیت کد و امضای توابع را شفافتر میکند. کاربردهای کلیدی شامل مدلسازی بار دادهی کانالها، جمعآوری خروجیها در الگوهای فناوت/فناین و عبور جفتهایی مانند (value, error) در پایپلاینهاست؛ با این تأکید که هرجا یک مفهوم دامنهای نامدار لازم است، یک struct کوچک همچنان گزینهی بهتر است. جمعبندی: Tuple گلولهی نقرهای نیست، اما اگر هدفمند استفاده شود، بدون لطمه به خوانایی یا ایمنی نوعی، کنترل و شفافیت بیشتری به کدهای Go میدهد و میتوان آن را بهصورت تدریجی در مرز پکیجها و پایپلاینها به کار گرفت.
#Golang #Go #Tuple #GolangWeekly #Generics #Concurrency #TypeSafety #SoftwareDesign
🟣لینک مقاله:
https://golangweekly.com/link/175071/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
take control with Tuple
🟢 خلاصه مقاله:
این مطلب از Golang Weekly نشان میدهد چگونه بهکارگیری سنجیده Tuple میتواند به توسعهدهندگان Go کمک کند روی جریان داده، مدیریت خطا و همزمانی کنترل بیشتری داشته باشند. در این رویکرد، Tuple راهی فشرده برای بستن چند مقدار مرتبط در یک واحد نوعدار است که با تکیه بر جنریکها، ضمن کاهش کد تکراری، نیت کد و امضای توابع را شفافتر میکند. کاربردهای کلیدی شامل مدلسازی بار دادهی کانالها، جمعآوری خروجیها در الگوهای فناوت/فناین و عبور جفتهایی مانند (value, error) در پایپلاینهاست؛ با این تأکید که هرجا یک مفهوم دامنهای نامدار لازم است، یک struct کوچک همچنان گزینهی بهتر است. جمعبندی: Tuple گلولهی نقرهای نیست، اما اگر هدفمند استفاده شود، بدون لطمه به خوانایی یا ایمنی نوعی، کنترل و شفافیت بیشتری به کدهای Go میدهد و میتوان آن را بهصورت تدریجی در مرز پکیجها و پایپلاینها به کار گرفت.
#Golang #Go #Tuple #GolangWeekly #Generics #Concurrency #TypeSafety #SoftwareDesign
🟣لینک مقاله:
https://golangweekly.com/link/175071/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Tuple
Generic Tools Suck
The best pair programming app for macOS and Windows developers.
👍2
🔵 عنوان مقاله
Register Allocation in the Go Compiler
🟢 خلاصه مقاله:
** این یادداشت دو موضوع فنی اما اثرگذار بر کارایی در Go را کنار هم میگذارد: نحوه تخصیص ثبات در کامپایلر و این واقعیت که «دمِ Sliceها برای همیشه رشد نمیکند». بخش نخست با الهام از تجربههای Vladimir Makarov در دنیای تخصیص ثبات توضیح میدهد که پشتصحنهی SSA در کامپایلر Go چگونه محدودههای حیات متغیرها را روی تعداد کمی ثبات سختافزاری نگاشت میکند، φها را حل و حرکتها را ادغام میکند و در صورت نیاز سرریز به پشته انجام میدهد. چالش اصلی، حفظ کیفیت کد (کاهش حرکتها و سرریزها) در کنار سرعت بالای کامپایل است؛ و ایدههایی مانند ترکیب رویکردهای linear-scan و coloring، مدیریت دقیق ثباتهای caller/callee-saved، سرریز در مسیرهای کماحتمال و rematerialization انتخابی به ایجاد این توازن کمک میکنند.
بخش دوم، با تکیه بر نوشتهی Ted Unangst، یادآور میشود که Slice در Go تنها وصلهای روی یک آرایه مشترک است: append میتواند باعث تخصیص دوباره و کپی شود، رشد ظرفیت با بزرگتر شدن Slice کند میشود، و با sub-slice ممکن است حافظهی «سرِ» حذفشده همچنان نگه داشته شود. «دمِ» Slice بدون ظرفیت کافی گسترش نمییابد و برای رها شدن حافظهی قدیمی باید گاهی به یک آرایهی تازه کپی کنید. راهکارها شامل استفاده از make با ظرفیت مناسب، پرهیز از نگهداشتن referenceهای ناخواسته به آرایهی بزرگ و کپی آگاهانه برای آزادسازی حافظه است.
جمعبندی: همانطور که انتخابهای تخصیص ثبات روی تعداد دستورها و سرریز اثر میگذارد، الگوهای کار با Slice نیز روی مصرف حافظه و فشار GC اثر دارند. درک این جزئیات به کدی چابکتر، تأخیر پایدارتر و رفتار قابل پیشبینیتر در سرویسهای Go منجر میشود.
#Go #Golang #Compiler #RegisterAllocation #Performance #MemoryManagement #Slices #SystemsProgramming
🟣لینک مقاله:
https://golangweekly.com/link/175064/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Register Allocation in the Go Compiler
🟢 خلاصه مقاله:
** این یادداشت دو موضوع فنی اما اثرگذار بر کارایی در Go را کنار هم میگذارد: نحوه تخصیص ثبات در کامپایلر و این واقعیت که «دمِ Sliceها برای همیشه رشد نمیکند». بخش نخست با الهام از تجربههای Vladimir Makarov در دنیای تخصیص ثبات توضیح میدهد که پشتصحنهی SSA در کامپایلر Go چگونه محدودههای حیات متغیرها را روی تعداد کمی ثبات سختافزاری نگاشت میکند، φها را حل و حرکتها را ادغام میکند و در صورت نیاز سرریز به پشته انجام میدهد. چالش اصلی، حفظ کیفیت کد (کاهش حرکتها و سرریزها) در کنار سرعت بالای کامپایل است؛ و ایدههایی مانند ترکیب رویکردهای linear-scan و coloring، مدیریت دقیق ثباتهای caller/callee-saved، سرریز در مسیرهای کماحتمال و rematerialization انتخابی به ایجاد این توازن کمک میکنند.
بخش دوم، با تکیه بر نوشتهی Ted Unangst، یادآور میشود که Slice در Go تنها وصلهای روی یک آرایه مشترک است: append میتواند باعث تخصیص دوباره و کپی شود، رشد ظرفیت با بزرگتر شدن Slice کند میشود، و با sub-slice ممکن است حافظهی «سرِ» حذفشده همچنان نگه داشته شود. «دمِ» Slice بدون ظرفیت کافی گسترش نمییابد و برای رها شدن حافظهی قدیمی باید گاهی به یک آرایهی تازه کپی کنید. راهکارها شامل استفاده از make با ظرفیت مناسب، پرهیز از نگهداشتن referenceهای ناخواسته به آرایهی بزرگ و کپی آگاهانه برای آزادسازی حافظه است.
جمعبندی: همانطور که انتخابهای تخصیص ثبات روی تعداد دستورها و سرریز اثر میگذارد، الگوهای کار با Slice نیز روی مصرف حافظه و فشار GC اثر دارند. درک این جزئیات به کدی چابکتر، تأخیر پایدارتر و رفتار قابل پیشبینیتر در سرویسهای Go منجر میشود.
#Go #Golang #Compiler #RegisterAllocation #Performance #MemoryManagement #Slices #SystemsProgramming
🟣لینک مقاله:
https://golangweekly.com/link/175064/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Vladimir Makarov
Register allocation in the Go compiler
As a maintainer of the GCC register allocator (RA), I naturally have a keen interest in the register allocators used in various industrial compilers. For some compilers, like LLVM and Cranelift, there is sufficient documentation, including papers and presentations…
❤1🎉1🍾1
🔵 عنوان مقاله
The new() Function Will Take an Expression in Go 1.26
🟢 خلاصه مقاله:
در Go 1.26 یک بهبود کوچک اما کاربردی میآید: تابع new() میتواند یک عبارت بگیرد، نه فقط یک نوع؛ Chris Siebenmann توضیح میدهد که این تغییر برخی الگوهای تخصیص و مقداردهی را سادهتر و خواناتر میکند. Tim Little با استفاده از raylib-go یک شبیهسازی آب بلادرنگ در Go میسازد و نشان میدهد چگونه میتوان با ترکیب کارایی Go و سادگی raylib، رندر و فیزیک ساده را پیادهسازی کرد. Vladimir Makarov به تخصیص ثبات در کامپایلر Go میپردازد و تأثیر آن بر کارایی، استراتژیها و ملاحظات بخش SSA را شرح میدهد. در نهایت، Ted Unangst یادآوری میکند که «دم» برشها در Go بینهایت رشد نمیکند و باید به ظرفیت، بازبرش و رفتار append توجه کرد تا از خطاها و افت کارایی جلوگیری شود.
#Go #Golang #Go126 #Compiler #RegisterAllocation #raylib #GameDev #Slices
🟣لینک مقاله:
https://golangweekly.com/link/175062/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
The new() Function Will Take an Expression in Go 1.26
🟢 خلاصه مقاله:
در Go 1.26 یک بهبود کوچک اما کاربردی میآید: تابع new() میتواند یک عبارت بگیرد، نه فقط یک نوع؛ Chris Siebenmann توضیح میدهد که این تغییر برخی الگوهای تخصیص و مقداردهی را سادهتر و خواناتر میکند. Tim Little با استفاده از raylib-go یک شبیهسازی آب بلادرنگ در Go میسازد و نشان میدهد چگونه میتوان با ترکیب کارایی Go و سادگی raylib، رندر و فیزیک ساده را پیادهسازی کرد. Vladimir Makarov به تخصیص ثبات در کامپایلر Go میپردازد و تأثیر آن بر کارایی، استراتژیها و ملاحظات بخش SSA را شرح میدهد. در نهایت، Ted Unangst یادآوری میکند که «دم» برشها در Go بینهایت رشد نمیکند و باید به ظرفیت، بازبرش و رفتار append توجه کرد تا از خطاها و افت کارایی جلوگیری شود.
#Go #Golang #Go126 #Compiler #RegisterAllocation #raylib #GameDev #Slices
🟣لینک مقاله:
https://golangweekly.com/link/175062/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🔵 عنوان مقاله
Building a Coding Agent in Go from Scratch
🟢 خلاصه مقاله:
این مجموعه سه مطلب عملی برای توسعهدهندگان Go را کنار هم میگذارد: ساخت یک coding agent از صفر در Go، استفاده از Timing Wheels برای انقضای کارآمد ۱۰ میلیون کلید بدون اسکنهای O(n)، و مروری دقیق بر sync شامل Mutex، RWMutex، WaitGroup، Once، Cond و Pool. بخش agent بر معماری ماژولار، هماهنگی goroutine و channel، sandbox امن و حلقه بازخورد برای اجرای کد و بهبود تدریجی تأکید دارد. نوشته Bill Kennedy نشان میدهد چگونه با سطلبندی زمانسنجها و حرکت چرخ، سربار و نوسان تأخیر کاهش مییابد و حتی در مقیاس بزرگ پایدار میماند. در نهایت، مرور sync توصیههای عملی برای انتخاب درست بین primitives و channel، کاهش contention، و ارزیابی با benchmark، pprof و race detector ارائه میکند تا سامانههای Go هم هوشمند و هم سریع باشند.
#Go #Golang #Concurrency #TimingWheels #sync #SystemsProgramming #GoInternals #Performance
🟣لینک مقاله:
https://golangweekly.com/link/175365/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Building a Coding Agent in Go from Scratch
🟢 خلاصه مقاله:
این مجموعه سه مطلب عملی برای توسعهدهندگان Go را کنار هم میگذارد: ساخت یک coding agent از صفر در Go، استفاده از Timing Wheels برای انقضای کارآمد ۱۰ میلیون کلید بدون اسکنهای O(n)، و مروری دقیق بر sync شامل Mutex، RWMutex، WaitGroup، Once، Cond و Pool. بخش agent بر معماری ماژولار، هماهنگی goroutine و channel، sandbox امن و حلقه بازخورد برای اجرای کد و بهبود تدریجی تأکید دارد. نوشته Bill Kennedy نشان میدهد چگونه با سطلبندی زمانسنجها و حرکت چرخ، سربار و نوسان تأخیر کاهش مییابد و حتی در مقیاس بزرگ پایدار میماند. در نهایت، مرور sync توصیههای عملی برای انتخاب درست بین primitives و channel، کاهش contention، و ارزیابی با benchmark، pprof و race detector ارائه میکند تا سامانههای Go هم هوشمند و هم سریع باشند.
#Go #Golang #Concurrency #TimingWheels #sync #SystemsProgramming #GoInternals #Performance
🟣لینک مقاله:
https://golangweekly.com/link/175365/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
YouTube
Building a coding agent from scratch - Bill Kennedy
In this talk, Bill will share how AI agents fundamental work and interact with LLMs to perform basic tasks like listing, reading, and editing files. During the talk, Bill will live code an agent and explain all the parts of the code needed to make this work.…
❤3👍1
🔵 عنوان مقاله
qjs: Run JavaScript in Go
🟢 خلاصه مقاله:
qjs یک روش تازه برای اجرای JavaScript داخل اپهای Go است که بدون نیاز به Cgo کار میکند. بهجای اتصال به یک کتابخانه بومی، نسخه فورکشدهای از QuickJS را به WebAssembly کامپایل کرده و آن را زیر Wazero اجرا میکند. این رویکرد کل زنجیره را در محیط خالص Go نگه میدارد و فرایند بیلد، استاتیکسازی و کراسکامپایل را سادهتر میکند. مزیت دیگر، ایزولهسازی و سندباکس طبیعی ناشی از WebAssembly است. هرچند احتمالاً نسبت به اتصال بومی اندکی سربار دارد، اما برای سناریوهایی مثل اسکریپتنویسی، افزونهها و اجرای امن منطق کاربر، توازن خوبی بین سادگی، پرتابلبودن و امنیت ارائه میدهد.
#Go #JavaScript #WebAssembly #Wazero #QuickJS #Cgo #GoLang #Embedding
🟣لینک مقاله:
https://golangweekly.com/link/175350/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
qjs: Run JavaScript in Go
🟢 خلاصه مقاله:
qjs یک روش تازه برای اجرای JavaScript داخل اپهای Go است که بدون نیاز به Cgo کار میکند. بهجای اتصال به یک کتابخانه بومی، نسخه فورکشدهای از QuickJS را به WebAssembly کامپایل کرده و آن را زیر Wazero اجرا میکند. این رویکرد کل زنجیره را در محیط خالص Go نگه میدارد و فرایند بیلد، استاتیکسازی و کراسکامپایل را سادهتر میکند. مزیت دیگر، ایزولهسازی و سندباکس طبیعی ناشی از WebAssembly است. هرچند احتمالاً نسبت به اتصال بومی اندکی سربار دارد، اما برای سناریوهایی مثل اسکریپتنویسی، افزونهها و اجرای امن منطق کاربر، توازن خوبی بین سادگی، پرتابلبودن و امنیت ارائه میدهد.
#Go #JavaScript #WebAssembly #Wazero #QuickJS #Cgo #GoLang #Embedding
🟣لینک مقاله:
https://golangweekly.com/link/175350/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - fastschema/qjs: QJS is a CGO-Free, modern, secure JavaScript runtime for Go applications, built on the powerful QuickJS…
QJS is a CGO-Free, modern, secure JavaScript runtime for Go applications, built on the powerful QuickJS engine and Wazero WebAssembly runtime - fastschema/qjs
🔵 عنوان مقاله
Go v1.25.2 and v1.24.8 have been released
🟢 خلاصه مقاله:
بهروزرسانیهای Go در نسخههای v1.25.2 و v1.24.8 منتشر شدهاند که مجموعهای از اصلاحات امنیتی را در بستههای مختلف ارائه میکند. این نسخهها از نوع وصلهای و سازگار به عقب هستند و بدون تغییر در رفتار زبان، امنیت و پایداری ابزارها و کتابخانهها را بهبود میدهند. توصیه میشود هرچه سریعتر به آخرین وصله در شاخه فعلیتان ارتقا دهید (برای v1.25 به v1.25.2 و برای v1.24 به v1.24.8)، یادداشتهای انتشار و هر CVE مرتبط را بررسی کنید، باینریها را مجدداً بسازید و ابزارهایی مانند govulncheck را برای شناسایی وابستگیهای آسیبپذیر اجرا کنید.
#Go #Golang #Security #Update #PatchRelease #CVE #DevOps #SoftwareMaintenance
🟣لینک مقاله:
https://golangweekly.com/link/175354/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Go v1.25.2 and v1.24.8 have been released
🟢 خلاصه مقاله:
بهروزرسانیهای Go در نسخههای v1.25.2 و v1.24.8 منتشر شدهاند که مجموعهای از اصلاحات امنیتی را در بستههای مختلف ارائه میکند. این نسخهها از نوع وصلهای و سازگار به عقب هستند و بدون تغییر در رفتار زبان، امنیت و پایداری ابزارها و کتابخانهها را بهبود میدهند. توصیه میشود هرچه سریعتر به آخرین وصله در شاخه فعلیتان ارتقا دهید (برای v1.25 به v1.25.2 و برای v1.24 به v1.24.8)، یادداشتهای انتشار و هر CVE مرتبط را بررسی کنید، باینریها را مجدداً بسازید و ابزارهایی مانند govulncheck را برای شناسایی وابستگیهای آسیبپذیر اجرا کنید.
#Go #Golang #Security #Update #PatchRelease #CVE #DevOps #SoftwareMaintenance
🟣لینک مقاله:
https://golangweekly.com/link/175354/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
👍1
🔵 عنوان مقاله
Reverse Engineering Doesn't Have to Be Hard
🟢 خلاصه مقاله:
این مطلب نشان میدهد مهندسی معکوس الزماً سخت نیست و با یک نمونه بدافزار نوشتهشده با Go بهصورت گامبهگام پیش میرود. بدون نیاز به دانستن Go یا کدنویسی، بر روششناسی تمرکز دارد: راهاندازی محیط امن، تریاژ اولیه (هشها، فراداده و بررسی سریع رشتهها)، تشخیص بستهبندی/ابهامسازی، تحلیل ایستا (بررسی imports، نقطههای ورود، نامگذاری تابعها، و ترسیم جریان کنترل) و در کنار آن تحلیل پویا در محیط جداافتاده برای مشاهده رفتار پردازشی، تغییرات سیستم و ترافیک شبکه. نتیجه، یک جعبهابزار فشرده از تکنیکهای پایه است که به مبتدیان اعتمادبهنفس میدهد تا منطق بدافزار را روشن کنند و نشانگرهای آلودگی (IOC) را استخراج کنند—بدون تکیه بر ترفندهای وابسته به زبان.
#ReverseEngineering #MalwareAnalysis #Golang #Infosec #StaticAnalysis #DynamicAnalysis #CyberSecurity
🟣لینک مقاله:
https://golangweekly.com/link/175361/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Reverse Engineering Doesn't Have to Be Hard
🟢 خلاصه مقاله:
این مطلب نشان میدهد مهندسی معکوس الزماً سخت نیست و با یک نمونه بدافزار نوشتهشده با Go بهصورت گامبهگام پیش میرود. بدون نیاز به دانستن Go یا کدنویسی، بر روششناسی تمرکز دارد: راهاندازی محیط امن، تریاژ اولیه (هشها، فراداده و بررسی سریع رشتهها)، تشخیص بستهبندی/ابهامسازی، تحلیل ایستا (بررسی imports، نقطههای ورود، نامگذاری تابعها، و ترسیم جریان کنترل) و در کنار آن تحلیل پویا در محیط جداافتاده برای مشاهده رفتار پردازشی، تغییرات سیستم و ترافیک شبکه. نتیجه، یک جعبهابزار فشرده از تکنیکهای پایه است که به مبتدیان اعتمادبهنفس میدهد تا منطق بدافزار را روشن کنند و نشانگرهای آلودگی (IOC) را استخراج کنند—بدون تکیه بر ترفندهای وابسته به زبان.
#ReverseEngineering #MalwareAnalysis #Golang #Infosec #StaticAnalysis #DynamicAnalysis #CyberSecurity
🟣لینک مقاله:
https://golangweekly.com/link/175361/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
YouTube
reverse engineering doesn't have to be hard
https://jh.live/hex-rays || Disassemble, decompile and debug with IDA Pro! Use promo code HAMMOND50 for 50% off any IDA Pro product (license discount is only applicable to individuals for any product, not corporations https://hex-rays.com/pricing) and code…
🔵 عنوان مقاله
GopherCon Korea 2025
🟢 خلاصه مقاله:
**GopherCon Korea 2025 حدود یک ماه دیگر، در تاریخ ۹ نوامبر برگزار میشود. این رویداد جامعهمحور برای توسعهدهندگان Go (Golang) فرصتی مناسب است تا بهروزترین روندها را دنبال کنند، تجربههای عملی را به اشتراک بگذارند و شبکهسازی مؤثری داشته باشند. معمولاً نشستها به موضوعاتی مانند مفاهیم زبان و کارایی، الگوهای همزمانی، توسعه cloud-native و microservices، ابزارها و observability و مطالعات موردی در مقیاس تولید میپردازد. اگر قصد حضور دارید، اکنون زمان خوبی برای ثبتنام و برنامهریزی سفر است و پیگیری کانالهای رسمی برای جزئیات برنامه و مکان توصیه میشود.
#GopherConKorea #GopherCon #Golang #Go #TechConference #Developers #Korea #SoftwareEngineering
🟣لینک مقاله:
https://golangweekly.com/link/175357/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GopherCon Korea 2025
🟢 خلاصه مقاله:
**GopherCon Korea 2025 حدود یک ماه دیگر، در تاریخ ۹ نوامبر برگزار میشود. این رویداد جامعهمحور برای توسعهدهندگان Go (Golang) فرصتی مناسب است تا بهروزترین روندها را دنبال کنند، تجربههای عملی را به اشتراک بگذارند و شبکهسازی مؤثری داشته باشند. معمولاً نشستها به موضوعاتی مانند مفاهیم زبان و کارایی، الگوهای همزمانی، توسعه cloud-native و microservices، ابزارها و observability و مطالعات موردی در مقیاس تولید میپردازد. اگر قصد حضور دارید، اکنون زمان خوبی برای ثبتنام و برنامهریزی سفر است و پیگیری کانالهای رسمی برای جزئیات برنامه و مکان توصیه میشود.
#GopherConKorea #GopherCon #Golang #Go #TechConference #Developers #Korea #SoftwareEngineering
🟣لینک مقاله:
https://golangweekly.com/link/175357/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GopherCon Korea 2025
The largest annual conference for Go language users in South Korea.
❤1
🔵 عنوان مقاله
Constraining LLMs with Structured Output in Python and Go
🟢 خلاصه مقاله:
**این مجموعه به روشهای عملی برای واداشتن LLMها به تولید خروجی ساختیافته میپردازد تا ادغام در سیستمهای تولیدی قابل اعتماد، قابل اعتبارسنجی و قابل آزمون باشد. در Python با تعریف شِماهای سازگار با JSON و اتصال خروجی مدل به انواع مشخص، و در Go با استفاده از structهای نوعدار، struct tagها، و خطاهای صریح، خطر خروجی متنی آزاد و شکننده کاهش مییابد.
همچنین یک ویدئو از Rost Glukhov ساخت یک عامل کدنویس در Go را از ابتدا نشان میدهد؛ از طراحی پرامپت و برنامهریزی تا اجرای ابزار و حلقه بازخورد. در بخش کارهای زمانبندی انبوه، مقاله Bill Kennedy توضیح میدهد چگونه Timing Wheels بدون پیمایش O(n) میتوانند میلیونها کلید را منقضی کنند—الگویی مفید برای زمانبندیکنندهها، کشها و محدودکنندههای نرخ در Go. برای درک عمیقتر همروندی، نوشتار Ankur Anand رفتار و انتخابهای درست پیرامون primitives بسته sync مانند Mutex، RWMutex، WaitGroup و Cond را تشریح میکند. در پایان، مطلبی از Matheus Mina این مجموعه را کامل میکند. حاصل کار، جعبهابزاری عملی برای ساخت عاملها و سرویسهای پربازده در Python و Go است.
#Go #Python #LLM #StructuredOutput #TimingWheels #Concurrency #Golang #Agents
🟣لینک مقاله:
https://golangweekly.com/link/175364/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Constraining LLMs with Structured Output in Python and Go
🟢 خلاصه مقاله:
**این مجموعه به روشهای عملی برای واداشتن LLMها به تولید خروجی ساختیافته میپردازد تا ادغام در سیستمهای تولیدی قابل اعتماد، قابل اعتبارسنجی و قابل آزمون باشد. در Python با تعریف شِماهای سازگار با JSON و اتصال خروجی مدل به انواع مشخص، و در Go با استفاده از structهای نوعدار، struct tagها، و خطاهای صریح، خطر خروجی متنی آزاد و شکننده کاهش مییابد.
همچنین یک ویدئو از Rost Glukhov ساخت یک عامل کدنویس در Go را از ابتدا نشان میدهد؛ از طراحی پرامپت و برنامهریزی تا اجرای ابزار و حلقه بازخورد. در بخش کارهای زمانبندی انبوه، مقاله Bill Kennedy توضیح میدهد چگونه Timing Wheels بدون پیمایش O(n) میتوانند میلیونها کلید را منقضی کنند—الگویی مفید برای زمانبندیکنندهها، کشها و محدودکنندههای نرخ در Go. برای درک عمیقتر همروندی، نوشتار Ankur Anand رفتار و انتخابهای درست پیرامون primitives بسته sync مانند Mutex، RWMutex، WaitGroup و Cond را تشریح میکند. در پایان، مطلبی از Matheus Mina این مجموعه را کامل میکند. حاصل کار، جعبهابزاری عملی برای ساخت عاملها و سرویسهای پربازده در Python و Go است.
#Go #Python #LLM #StructuredOutput #TimingWheels #Concurrency #Golang #Agents
🟣لینک مقاله:
https://golangweekly.com/link/175364/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Rost Glukhov | Personal site and technical blog
Constraining LLMs with Structured Output: Ollama, Qwen3 & Python or Go
Constraining LLMs with Structured Output — Using Ollama and Qwen3 with examples in Python and Go
❤2
🔵 عنوان مقاله
Lo v1.52.0: A Lodash-Style Library for Go 1.18+
🟢 خلاصه مقاله:
** Lo v1.52.0 یک کتابخانه سبک Lodash برای Go 1.18+ است که مجموعهای از توابع کمکیِ آماده برای کار با slice و map و سایر کالکشنها را فراهم میکند. با تکیه بر generics در Go، این ابزار توابعی مانند Map، Filter، Reduce، GroupBy، Chunk، و عملیات مجموعهای مثل Union و Intersect را بهصورت type-safe و بدون نیاز به reflection ارائه میدهد. هدف آن کاهش کد زائد، سادهسازی پردازش دادهها، و افزایش خوانایی است؛ بهطوریکه بتوان بهجای حلقههای تودرتو، زنجیرهای از توابع قابلخواندن و کارا نوشت. نسخه v1.52.0 این رویکرد را برای کاربران Go 1.18+ تثبیت کرده و تجربهای روان و کارآمد برای تبدیل و مدیریت کالکشنها فراهم میکند.
#Go #Golang #Lo #Lodash #Generics #Go18 #Libraries #FunctionalProgramming
🟣لینک مقاله:
https://golangweekly.com/link/175369/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Lo v1.52.0: A Lodash-Style Library for Go 1.18+
🟢 خلاصه مقاله:
** Lo v1.52.0 یک کتابخانه سبک Lodash برای Go 1.18+ است که مجموعهای از توابع کمکیِ آماده برای کار با slice و map و سایر کالکشنها را فراهم میکند. با تکیه بر generics در Go، این ابزار توابعی مانند Map، Filter، Reduce، GroupBy، Chunk، و عملیات مجموعهای مثل Union و Intersect را بهصورت type-safe و بدون نیاز به reflection ارائه میدهد. هدف آن کاهش کد زائد، سادهسازی پردازش دادهها، و افزایش خوانایی است؛ بهطوریکه بتوان بهجای حلقههای تودرتو، زنجیرهای از توابع قابلخواندن و کارا نوشت. نسخه v1.52.0 این رویکرد را برای کاربران Go 1.18+ تثبیت کرده و تجربهای روان و کارآمد برای تبدیل و مدیریت کالکشنها فراهم میکند.
#Go #Golang #Lo #Lodash #Generics #Go18 #Libraries #FunctionalProgramming
🟣لینک مقاله:
https://golangweekly.com/link/175369/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - samber/lo: 💥 A Lodash-style Go library based on Go 1.18+ Generics (map, filter, contains, find...)
💥 A Lodash-style Go library based on Go 1.18+ Generics (map, filter, contains, find...) - samber/lo
❤2