CINXE.COM
Golang Weekly Issue 516: July 23, 2024
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Golang Weekly Issue 516: July 23, 2024</title> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="stylesheet" href="/css/app.css"> <link rel="alternate" type="application/rss+xml" title="Golang Weekly" href="/rss/"> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&display=swap" rel="stylesheet"> <link rel="shortcut icon" href="/favicon.png"> <meta name="facebook-domain-verification" content="lml32j8e8q00yrgpg4hs968ah31mxv" /> </head> <body class="go dom dom-go issues 516 issue go issue"> <header class="contained"> <nav> <div class="sitename" style="cursor: pointer" onclick="window.location.href='/'"><a href="/">Golang Weekly</a></div> <div class="items"> <a href="/issues" class="issues">Archives</a><span class="divider">|</span> <a href="/latest" class="latest">Latest</a><span class="nomobile"><span class="divider">|</span> <a href="/rss/">RSS</a></span> </div> </nav> </header> <main> <section class="contained"> <div class="nomobile"> <div class="subscribe_box" class=""> <form class="subscribe" action="/subscribe" method="POST"> <input type="email" placeholder="Want to subscribe? Enter your address here" class="email" name="yemail" id="email" /><button class="awesome" type="submit">Subscribe now »</button> <div class="smallprint">Easy to unsubscribe at any time. Your e-mail address <a href="https://cooperpress.com/spam.html">is safe</a> — here's <a href="https://cooperpress.com/legal/privacy/">our privacy policy.</a></div> <input type="hidden" name="_csrf" value="HAaehXrdAWxIZuLdfd8SpZ1-sz878zy5Jr0Sb50HQ0M" /> </form> </div> </div> <div class="pager"> <div class="prev"> <a href="/issues/515">« Prev</a> </div> <div class="center"> <!-- Issue 516 --> </div> <div class="next"> <a href="/issues/517">Next »</a> </div> </div> <div class="issue-html"> <!--[if (gte mso 9)|(IE)]> <table cellpadding="0" cellspacing="0" align="center" bgcolor="#ffffff" width="600"><tr><td valign="top" style="width: 600px;" bgcolor="#ffffff"><![endif]--> <table align="center" border="0" cellpadding="0" cellspacing="0" id="main" width="100%" style="table-layout: fixed; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; max-width: 600px; height: 100% !important; direction: ltr; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"> <tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"> <div id="content"> <!-- left/right splitbar --> <table class="el-splitbar" width="100%" cellpadding="0" cellspacing="0" style="border-collapse: collapse;"><tr> <td width="50%" align="left" style="padding-left: 4px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"><p style="font-size: 12px; color: #999999; text-transform: uppercase; line-height: 1.0em; margin-top: 0.8em; margin-bottom: 0.8em;">#516 — July 23, 2024</p></td> <td width="50%" align="right" style="padding-right: 4px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"><p style="font-size: 12px; text-transform: uppercase; line-height: 1.0em; margin-top: 0.8em; margin-bottom: 0.8em;"><a target="_blank" href="https://golangweekly.com/leave/*%7CUID%7C*" style="text-decoration: none; color: #0099b4;">Unsub</a> | <a target="_blank" href="https://golangweekly.com/issues/516" style="text-decoration: none; color: #0099b4;">Web Version</a></p></td> </tr></table> <table class="norss" id="together" width="100%" align="center" style="text-align: center; border-collapse: collapse; margin-top: 0; margin-right: 0; margin-bottom: 0; margin-left: 0;"> <tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; margin-top: 0; margin-right: 0; margin-bottom: 0; margin-left: 0; padding-top: 0; padding-right: 0; padding-bottom: 0; padding-left: 0;"> <table align="center" style="margin-top: 4px; margin-bottom: 4px; border-collapse: collapse;"> <tr> <td style="vertical-align: middle; text-align: right; text-transform: uppercase; letter-spacing: -0.2px; font-weight: 500; color: #222; font-size: 0.9em; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; line-height: 1.48em; border-collapse: collapse;">Together with </td> <td style="vertical-align: middle; text-align: left; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"> <a target="_blank" href="https://blacksmith.sh/?ref=cooperpressgo" style="outline: none; text-decoration: none; color: #0099b4; border-top-width: 0; border-right-width: 0; border-bottom-width: 0; border-left-width: 0;"> <img src="https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,e_trim,w_820,h_100/e_make_transparent/co_white,e_outline:7/uq9yvkqtinkixhiq19mf.png" style="max-width: 150px; outline: none; height: auto; text-decoration: none; line-height: 100%; border-top-width: 0; border-right-width: 0; border-bottom-width: 0; border-left-width: 0;" width="150" alt="Blacksmith"> </a> </td> </tr> </table> </td></tr> </table> <table width="100%" cellpadding="0" cellspacing="0" style="border-collapse: collapse;"><tr><td style="height: 8px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"></td></tr></table> <!-- masthead --> <table width="100%" cellpadding="0" cellspacing="0" style="background-color: #6cd7f2; text-align: center; color: #003322; border-collapse: collapse;" class="el-masthead"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0; padding-right: 12px; padding-bottom: 0; padding-left: 12px;"><p style="font-size: 1.8em; font-weight: 600; line-height: 1.0em; margin-top: 0.8em; margin-bottom: 0.8em;">Go Weekly</p></td></tr></table> <table width="100%" class="el-fullwidthimage " cellpadding="0" cellspacing="0" style="border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"> <a target="_blank" href="https://antonz.org/go-1-23/" style="text-decoration: none; color: #0099b4;"><img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/rlsxqyjb8ydy6wdkd5xt.jpg" alt="" width="640" style="outline: none; height: auto; text-decoration: none; max-width: 100%; line-height: 100%; width: 100%; border-bottom-color: #6cd7e5; border-bottom-style: solid; border-top-width: 0; border-right-width: 0; border-bottom-width: 3px; border-left-width: 0;"></a> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://antonz.org/go-1-23/" title="antonz.org" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.1em; line-height: 1.4em;">Interactive Release Notes for Go 1.23</a></span> — If you find traditional release notes hard going, this interactive alternative with inline executable code snippets might help you get a grip on some of 1.23's changes before the final release next month.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Anton Zhiyanov </p> </td></tr></table> <!-- normal content section --> <table width="100%" cellpadding="0" cellspacing="0" class="content el-content blue" style="color: #222; border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"><p style="margin-top: 0; margin-bottom: 0.8em; background-color: #f0f9ff; line-height: 1.4em; font-size: 0.9em; padding-top: 8px; padding-right: 8px; padding-bottom: 8px; padding-left: 8px;">💡 While we're on the topic.. <a target="_blank" href="https://groups.google.com/g/golang-announce/c/jW315Nz132s/m/WqkCDaiVBQAJ" style="text-decoration: none; color: #0099b4; font-weight: 600;">Go 1.23 Release Candidate 2</a> has been released.</p></td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://boldlygo.tech/posts/2024-07-18-range-over-func/" title="boldlygo.tech" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">First Impressions of Go 1.23's Range-over-Func Feature</a></span> — When the author read Go’s newest iteration proposal, he felt a bit intimidated, but decided to kick the tires and share his experiences. Now? He loves it!</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Jonathan Hall </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <a target="_blank" target="_blank" href="https://blacksmith.sh/?ref=cooperpressgo" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;"><img src="https://copm.s3.amazonaws.com/0e2459e5.png" width="110" height="110" style="padding-top: 12px; padding-left: 12px; outline: none; height: auto; text-decoration: none; max-width: 100%; line-height: 100%; border-top-width: 0; border-right-width: 0; border-bottom-width: 0; border-left-width: 0;" align="right" alt="" class="som"></a> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://blacksmith.sh/?ref=cooperpressgo" title="blacksmith.sh" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">Run GitHub Actions Up to 2x Faster at Half the Cost</a></span> — Blacksmith runs your GitHub Actions substantially faster by running them on modern gaming CPUs. Integrating Blacksmith is a one-line code change. 100+ companies like GitBook, Superblocks, and Slope use Blacksmith to help developers merge code faster.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Blacksmith <span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em; border-radius: 2px; background-color: #ffc; color: #885 !important; padding-top: 1px; padding-right: 4px; padding-bottom: 1px; padding-left: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #dd9; border-right-color: #dd9; border-bottom-color: #dd9; border-left-color: #dd9; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid;" class="tag-sponsor">sponsor</span></p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://research.swtch.com/bisect" title="research.swtch.com" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">Hash-Based Bisect Debugging in Compilers and Runtimes</a></span> — If you’ve ever had to debug a large set of changes as part of an unfamiliar code base, this approach may feel like magic, so much so that Russ and others have created a CLI (<code>bisect</code>) to make the task easier. The explanation of using binary search, <code>git bisect</code>, and the <code>bisect</code> CLI here are very informative.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Russ Cox </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><span class="pretitle"></span> <a target="_blank" href="https://dev.to/progrium/how-i-build-simple-mac-apps-using-go-104j" title="dev.to" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">How I Build Simple Mac Apps using Go</a></span> — The creator of <a target="_blank" href="https://github.com/progrium/darwinkit" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">DarwinKit</a>, a set of native Apple APIs for Go, shows off how he uses it to create basic Mac apps.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Jeff Lindsay </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://threedots.tech/post/live-website-updates-go-sse-htmx/" title="threedots.tech" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">Live Website Updates with Go, SSE, and HTMX</a></span> — Showing real-time updates on a site may steer you toward WebSockets, but going the SSE (Server-Sent Events) route with HTMX provides a solid and simpler experience.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Miłosz Smółka </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://tn1ck.com/blog/update-plans" title="tn1ck.com" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">Safeguarding Changes using the Plan-Execute Pattern</a></span> — A pattern used by tools like Terraform where a preview of changes is shown before applying them. Tom creates a simple example of importing data into a database while highlighting new, changed, and removed entities.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Tom Nick </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="content el-md " style="border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p style="margin-top: 0.6em; margin-bottom: 0.8em;">📄 <a target="_blank" href="https://kmcd.dev/posts/grpc-over-http3/" style="text-decoration: none; color: #0099b4; font-weight: 500 !important;">gRPC Over HTTP/3</a> – Complete with practical examples in Go. <cite style="color: #444; text-transform: uppercase; font-size: 0.8em; font-style: normal; white-space: nowrap; line-height: 1.4em;">Kevin McDonald</cite></p> <p style="margin-top: 0.8em; margin-bottom: 0.8em;">📄 <a target="_blank" href="https://xnacly.me/posts/2024/go-cpp-interop/" style="text-decoration: none; color: #0099b4; font-weight: 500 !important;">Calling Go Functions from C++</a> <cite style="color: #444; text-transform: uppercase; font-size: 0.8em; font-style: normal; white-space: nowrap; line-height: 1.4em;">Matteo / xnacly</cite></p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-heading" style="background-color: none !important; text-align: left; margin-top: 15px; color: #333333; border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0; padding-right: 0; padding-bottom: 0; padding-left: 0;"><p style="font-size: 1.6em !important; font-weight: 400 !important; text-transform: none !important; line-height: 1.4em; display: inline-block; border-bottom-width: 6px; border-bottom-color: #f4f4f4; border-bottom-style: solid; margin-top: 0.5em; margin-right: 0; margin-bottom: 0.5em; margin-left: 0;">🛠 Code & Tools</p></td></tr></table> <table width="100%" class="el-fullwidthimage " cellpadding="0" cellspacing="0" style="border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"> <a target="_blank" href="https://github.com/nikoksr/notify" style="text-decoration: none; color: #0099b4;"><img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/dyyosgw9zdnw0yeaywto.jpg" alt="" width="640" style="outline: none; height: auto; text-decoration: none; max-width: 100%; line-height: 100%; width: 100%; border-top-width: 0; border-right-width: 0; border-bottom-width: 0; border-left-width: 0;"></a> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://github.com/nikoksr/notify" title="github.com" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">Notify 1.0: Send Notifications to Various Messaging Services</a></span> — Supports about <a target="_blank" href="https://github.com/nikoksr/notify?tab=readme-ov-file#supported-services-" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">thirty different services</a> including Discord, AWS SES and SNS, Microsoft Teams, Slack, and Telegram.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Niko Köser </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://fusionauth.io/docs/sdks/examples/go?utm_medium=newsletter&utm_source=gonewsletter&utm_campaign=july24_newsletter" title="fusionauth.io" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">Boost Your Go App Security with FusionAuth: Try Our Example SDKs</a></span> — Explore real-world example apps to integrate secure user management into your Go projects.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">FusionAuth <span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em; border-radius: 2px; background-color: #ffc; color: #885 !important; padding-top: 1px; padding-right: 4px; padding-bottom: 1px; padding-left: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #dd9; border-right-color: #dd9; border-bottom-color: #dd9; border-left-color: #dd9; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid;" class="tag-sponsor">sponsor</span></p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><span class="pretitle">🔒</span> <a target="_blank" href="https://pkg.go.dev/golang.org/x/vuln/cmd/govulncheck" title="pkg.go.dev" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">govulncheck 1.1: Find Vulnerable Dependencies in Your Go Code</a></span> — Govulncheck uses static analysis on your code, along with the <a target="_blank" href="https://vuln.go.dev/" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">Go Vulnerability Database</a>, to report relevant known vulnerabilities to you. There’s <a target="_blank" href="https://go.dev/doc/tutorial/govulncheck" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">an official tutorial</a> on how to use it too.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Julie Qiu (Go Security Team) </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://lindb.io/oss/lindb" title="lindb.io" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">LinDB: A Go-Powered Time Series Database System</a></span> — Joining a long line of Go-powered database systems comes LinDB, a new performance and availability-focused time-series database that can be accessed via a REST API. <a target="_blank" href="https://github.com/lindb/lindb" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">GitHub repo.</a></p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Lin Labs Inc. </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://github.com/go-kratos/kratos" title="github.com" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">Kratos 2.8: A Go Framework for Cloud-Based Microservices</a></span> — A <em>“microservice-oriented governance framework”</em> built around HTTP/gRPC.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Kratos </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="content el-md releases flat" style="border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <ul style="padding-left: 0; margin-left: 0px; list-style-type: none; list-style-position: inside;"> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.6em; margin-bottom: 0.8em;"><a target="_blank" href="https://github.com/redis/go-redis" style="text-decoration: none; color: #0099b4; font-weight: 500 !important; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">go-redis 9.6</a> – Redis client library. <a target="_blank" href="https://github.com/redis/go-redis/releases/tag/v9.6.0" style="text-decoration: none; color: #0099b4; font-weight: 500 !important; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">v9.6</a> adds support for <a target="_blank" href="https://redis.io/docs/latest/commands/hexpire/" style="text-decoration: none; color: #0099b4; font-weight: 500 !important; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">hash field expiration commands</a> as introduced in Redis 7.4.</p> </li> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.6em; margin-bottom: 0.8em;"><a target="_blank" href="https://github.com/eapache/go-resiliency" style="text-decoration: none; color: #0099b4; font-weight: 500 !important; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">go-resiliency 1.7</a> – Resiliency patterns for Go. Circuit-breaker, deadline & more.</p> </li> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.6em; margin-bottom: 0.8em;"><a target="_blank" href="https://github.com/Permify/permify" style="text-decoration: none; color: #0099b4; font-weight: 500 !important; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Permify 0.10</a> – Google Zanzibar-inspired authorization.</p> </li> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.6em; margin-bottom: 0.8em;"><a target="_blank" href="https://github.com/bufbuild/buf" style="text-decoration: none; color: #0099b4; font-weight: 500 !important; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Buf 1.35</a> – CLI tool for working with Protocol Buffers.</p> </li> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.6em; margin-bottom: 0.8em;"><a target="_blank" href="https://github.com/go-delve/delve" style="text-decoration: none; color: #0099b4; font-weight: 500 !important; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Delve 1.23</a> – Popular debugging tool for Go code.</p> </li> </ul> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" style="border-collapse: collapse;"><tr><td style="height: 18px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"></td></tr></table> </div> </td></tr> </table> <!--[if (gte mso 9)|(IE)]></td></tr></table><![endif]--> </div> <div class="pager"> <div class="prev"> <a href="/issues/515">« Prev</a> </div> <div class="center"> <!-- Issue 516 --> </div> <div class="next"> <a href="/issues/517">Next »</a> </div> </div> <div class="subscribe_box" class=""> <form class="subscribe" action="/subscribe" method="POST"> <input type="email" placeholder="Want to subscribe? Enter your address here" class="email" name="yemail" id="email" /><button class="awesome" type="submit">Subscribe now »</button> <div class="smallprint">Easy to unsubscribe at any time. Your e-mail address <a href="https://cooperpress.com/spam.html">is safe</a> — here's <a href="https://cooperpress.com/legal/privacy/">our privacy policy.</a></div> <input type="hidden" name="_csrf" value="HAaehXrdAWxIZuLdfd8SpZ1-sz878zy5Jr0Sb50HQ0M" /> </form> </div> </section> <img src="/open/516/web" /> </main> <script src="/js/app.js"></script> <script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create','UA-32535004-16','golangweekly.com');ga('send', 'pageview'); </script> </body> </html>