# libuv

libuv is a cross-platform library for asynchronous, non-blocking I/O and event-driven programming.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Node.js 12.22.8 (LTS)

DevFeed: [Node.js 12.22.8 (LTS)](<https://devfeed.tech/articles/node-js-12-22-8-lts-2506.md>)

Original publisher: [Read original article](<https://nodejs.org/en/blog/release/v12.22.8>)

Published: 2021-12-16T23:42:46Z

Content type: release

Language: en

Sources: [Node.js Blog](<https://devfeed.tech/sources/node-js-blog.md>)

Topics: [Node.js](<https://devfeed.tech/topics/node-js.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [certificates](<https://devfeed.tech/topics/certificates.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [openssl](<https://devfeed.tech/topics/openssl.md>), [libuv](<https://devfeed.tech/topics/libuv.md>)

Tags: [certificates](<https://devfeed.tech/tags/certificates.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [js](<https://devfeed.tech/tags/js.md>), [libuv](<https://devfeed.tech/tags/libuv.md>), [mozilla](<https://devfeed.tech/tags/mozilla.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [openssl](<https://devfeed.tech/tags/openssl.md>), [release](<https://devfeed.tech/tags/release.md>)

### AI overview

Node.js 12.22.8 is an LTS release that updates c-ares to fix a regression resolving CNAME records containing underscores and updates root certificates from Mozilla's Network Security Services 3.71. It also includes dependency, platform, documentation, runtime, test, and worker-process fixes.

### Source excerpt

Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.

## Fixing DNS in Node.js

DevFeed: [Fixing DNS in Node.js](<https://devfeed.tech/articles/fixing-dns-in-node-js-19048.md>)

Original publisher: [Read original article](<https://httptoolkit.com/blog/configuring-nodejs-dns/>)

Author: HTTP Toolkit; Tim Perry

Published: 2021-02-17T16:00:00Z

Content type: article

Language: en

Sources: [HTTP Toolkit](<https://devfeed.tech/sources/http-toolkit.md>)

Topics: [Node.js](<https://devfeed.tech/topics/node-js.md>), [libuv](<https://devfeed.tech/topics/libuv.md>), [Caching](<https://devfeed.tech/topics/caching.md>), [IO](<https://devfeed.tech/topics/io.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [Monitoring](<https://devfeed.tech/topics/monitoring.md>)

Tags: [caching](<https://devfeed.tech/tags/caching.md>), [dns](<https://devfeed.tech/tags/dns.md>), [http](<https://devfeed.tech/tags/http.md>), [io](<https://devfeed.tech/tags/io.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [libuv](<https://devfeed.tech/tags/libuv.md>), [monitoring](<https://devfeed.tech/tags/monitoring.md>), [node](<https://devfeed.tech/tags/node.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [performance](<https://devfeed.tech/tags/performance.md>)

### AI overview

This article explains how DNS works in Node.js and describes implementation pitfalls that can affect application performance and reliability. It covers synchronous DNS calls within libuv's threadpool, the lack of Node.js DNS caching, the cost of repeated lookups, and failures or delays caused by DNS server problems.

### Source excerpt

DNS is one of those invisible technologies that you use every day, but which works so well that you can conveniently ignore it. That is until it breaks completely, or slows your application down to a crawl, or you want to resolve something unusual, and then you're in a world of trouble. Unfortunately, DNS in Node.js isn't implemented quite as you might have hoped, and includes some gotchas that can create some of these problems for you, when you least expect it. If you're a node developer, it's worth understanding how it works in detail, so you can understand what your code is really doing, and boost your application performance & reliability. Why is Node.js DNS problematic? DNS is how you turn domain names (example.com) into IP addresses (93.184.216.34). That sounds easy, but there's a whole world of complexity in here. Critically, this is something that most modern applications do a lot, every time you make an HTTP request or any other network request to a machine, on the internet and often within your internal infrastructure too. In node specifically this can go wrong in quite a few ways, because: DNS requests in node appear asynchronous, but they're actually internally implemented as synchronous calls within node's internal libuv threadpool (which by default has only 4 threads). That means if you do >4 DNS lookups in parallel then you're going to block the libuv threadpool, even though they look like async IO. This will block every other DNS lookup, and also unrelated file IO and various crypto APIs, creating some extremely confusing performance problems. Node itself doesn't do any DNS caching at all. All of that is delegated to the OS, out of your control, and every DNS lookup must go to the OS every time. DNS lookups aren't free. If you're frequently making requests to a wide variety of different hostnames or hostnames with a short TTL (e.g. if you support webhooks, if you're building a monitoring tool, or if you're polling URLs elsewhere) then you may quickly