Executando verificação de segurança...
1

Concordo contigo e essa é uma correção importante. A frase original do post ("JS é single-threaded mas não é síncrono") tava misturando linguagem com runtime, que é o ponto exato que você levantou.

A forma correta: JavaScript a linguagem é síncrona e single-threaded. Cada função roda do começo ao fim na call stack, sem preempção. O que é assíncrono são as APIs que o host expõe, no Node isso vem de libuv, no browser vem das Web APIs, no Bun vem de um runtime próprio em Zig, no Deno vem do Tokio. O event loop é só o mecanismo que devolve os callbacks prontos pra engine quando a call stack esvazia.

O seu comentário sobre Go é ótimo porque reforça o mesmo ponto por outro ângulo: a linguagem em si pode ser síncrona e o runtime em cima dela é que orquestra concorrência (goroutines no scheduler, M:N threading). Linguagem ≠ runtime é uma das distinções mais importantes e mais mal explicadas em tutorial de JavaScript.

Já reescrevi a seção do post deixando isso explícito. Valeu pela correção direta, é exatamente o tipo de comentário que faz post ruim virar um pouco melhor.

Carregando publicação patrocinada...