const ThreadPool = @import("thread_pool");
pub const Batch = ThreadPool.Batch;
pub const Task = ThreadPool.Task;
pub const Completion = AsyncIO.Completion;
const std = @import("std");
pub const AsyncIO = @import("io");
const Output = @import("./global.zig").Output;
const IdentityContext = @import("./identity_context.zig").IdentityContext;
const HTTP = @import("./http_client_async.zig");
const NetworkThread = @This();
/// Single-thread in this pool
pool: ThreadPool,
pub var global: NetworkThread = undefined;
pub var global_loaded: std.atomic.Atomic(u32) = std.atomic.Atomic(u32).init(0);
const CachedAddressList = struct {
address_list: *std.net.AddressList,
expire_after: u64,
key: u64,
index: ?u32 = null,
invalidated: bool = false,
pub fn hash(name: []const u8, port: u16) u64 {
var hasher = std.hash.Wyhash.init(0);
hasher.update(name);
hasher.update(":");
hasher.update(std.mem.asBytes(&port));
return hasher.final();
}
pub fn init(key: u64, address_list: *std.net.AddressList, now: u64) CachedAddressList {
return CachedAddressList{
.address_list = address_list,
.expire_after = now + std.time.ms_per_hour,
.key = key,
};
}
pub fn invalidate(this: *CachedAddressList) void {
if (!this.invalidated) {
this.invalidated = true;
this.address_list.deinit();
}
_ = address_list_cached.remove(this.key);
}
};
pub const AddressListCache = std.HashMap(u64, CachedAddressList, IdentityContext(u64), 80);
pub var address_list_cached: AddressListCache = undefined;
pub fn getAddressList(allocator: std.mem.Allocator, name: []const u8, port: u16) !*std.net.AddressList {
// const hash = CachedAddressList.hash(name, port);
// const now = @intCast(u64, @maximum(0, std.time.milliTimestamp()));
// if (address_list_cached.getPtr(hash)) |cached| {
// if (cached.expire_after > now) {
// return cached;
// }
// cached.address_list.deinit();
// }
return try std.net.getAddressList(allocator, name, port);
}
pub var has_warmed = false;
pub fn warmup() !void {
if (has_warmed) return;
has_warmed = true;
try init();
global.pool.forceSpawn();
}
pub fn init() !void {
if ((global_loaded.swap(1, .Monotonic)) == 1) return;
AsyncIO.global_loaded = true;
global = NetworkThread{
.pool = ThreadPool.init(.{ .max_threads = 1, .stack_size = 64 * 1024 * 1024 }),
};
global.pool.on_thread_spawn = HTTP.onThreadStart;
}
ion>
content-perf-benchmark
content-slug-to-id
data-function-poc
db-migrate
db-seed
db-tokens
db22
debugging-mdx-memory
deno-test
densities-handling
disable-telemetry
docs/netlify-adapter-site-requirement
draft/content-collections-file
draft/script-style-bleed
examples/basics
examples/blog
examples/component
examples/container-with-vitest
examples/framework-alpine
examples/framework-lit
examples/framework-multiple
examples/framework-preact
examples/framework-react
examples/framework-solid
examples/framework-svelte
examples/framework-vue
examples/hackernews
examples/integration
examples/minimal
examples/portfolio
examples/ssr
examples/starlog
examples/toolbar-app
examples/with-markdoc
examples/with-mdx
examples/with-nanostores
examples/with-tailwindcss
examples/with-vitest
experiment-routes
experiment/markdown-components
expr-before
fallback-default-fade
feat/action-on-result
feat/action-success
feat/all-fragments
feat/astro-add
feat/astro-client
feat/astro-jsx
feat/astro-v-config
feat/autogenerated-tsconfig
feat/better-data-types
feat/better-table-type
feat/break-out-seed-returning
feat/cache-module-graph
feat/ci-next
feat/cli
feat/codemod
feat/config-log-level
feat/container
feat/context
feat/create-astro-replace-component-selector-with-astro-add
feat/create-astro-ui
feat/csr
feat/data-improvements
feat/data-with-set
feat/db-action
feat/db-relations
feat/define-data
feat/devtools
feat/dynamic-client-directives
feat/editor
feat/experimental-jsx
feat/expose-action-api-context
feat/expose-frontmatter-to-build-done-hook
feat/fetch-cache
feat/flow-components
feat/fonts-granular-preload
feat/fonts-retrieve-data
feat/foreign-key-migrations
feat/foreign-keys
feat/html-pages
feat/image-placeholders
feat/improve-custom-element-detection
feat/incremental-build
feat/indexes
feat/integration-kit
feat/jsx-transform
feat/legacy-markdown-flag
feat/markdoc-embeds
feat/markdown-components
feat/mdx-js-injection
feat/mdx-plugin-export
feat/minify-html
feat/next-get-env
feat/og
feat/ooo-streaming
feat/pragma
feat/preview
feat/react-19
feat/react-19-actions
feat/redirect-on-html-backup
feat/references
feat/remote-flag
feat/remove-astro-image-backup
feat/remove-studio
feat/render-with-queue
feat/reroute-ssr
feat/resolve-entrypoint
feat/router
feat/router-ii
feat/seo-components
feat/skip-sync-flag
feat/spa
feat/spa-ii
feat/squoosh
feat/standard-schema
feat/storage-studio
feat/streaming-rendering
feat/style-obj
feat/test-utils
feat/xray-improvements
fetch-astro-pages-mvp
fix-408
fix-all-pages-key
fix-beta-ref
fix-create-ref
fix-netlify-edge
fix-next-basics
fix-nullish-slot-name
fix-s-island-fallback
fix-vite-asset
fix/actions-cookies
fix/actions-pending-timeout
fix/assets-types
fix/astro-config-refresh
fix/astro-html-escape-bug
fix/build-subpaths
fix/client-only-component-css
fix/client-scripts-windows
fix/config-migration-defaults
fix/container-directives
fix/dates
fix/db-integration-with-missing-config
fix/devtoolbar-data-unset
fix/empty-slots
fix/filepath-layer
fix/frontmatter-file-url
fix/head-propagation
fix/hmr-css-deps
fix/import-ts-errors
fix/main-build-failure
fix/map-file-404-logs
fix/mdx-named-slots
fix/middleware-import
fix/multi-images
fix/nested-get-collection-call
fix/preact-package-build-failure
fix/primary-key-optional
fix/regex-flags
fix/server-headers
fix/stable-renderer-order
fix/transaction-type
fix/vue-nested
fix/webapi-dev
fork/markdoc-poc-with-md-support
fork/markdoc-poc-with-parser
format-imports-run
formatting
forward-button
framework-agnostic-astro-components
fryuni/db-pluggable-backend
fryuni/test-route-setup-hook
fryuni/tracing-hooks
hippotastic/legitimate-bat
hoisted-script-ts
host-ssr-example-2
hostfornode
image-non-node
improve-base-handling
inline-hoisted-scripts-now
jn.convert-assertions-to-query-params
latest
live-loaders
main
mandar1jn/ci-repo-check
markdoc-embed-prototyping
markdown
markdown-poc
mdx-path
mk/render-slot-template-backup
move-default-md-code-component
mt/lit-DSD
mt/lit-regen
mt/parse-DSD
mt/router_refactoring
nate/new-blog-template
netlify-1
netlify-preview
new-adapter-api
next
next-render
no-more-vite-postprocess
no-more-vite-postprocess2
old-build
plt-1006/unified-and-mdx
plt-1768-trailing-slash-object
preact-shared-signals
process-env-override
progress-log
re-export-drivers
react-fast-refresh
redirects-priority2
redirects-ssg-object
refactor-how-client-directives-work
refactor/image-internals
refactor/markdoc-renderer
refactor/rendere-queue
refactor/sitemap
refactor/ssr-size
release/0.17
release/0.18
remote-cdn-link
remove-fs-abstraction
remove-start
restart-on-lock
revert-13008-renovate/all-minor-patch
revert-lockfile
route-manifest-adapter
sarah11918-image-errors
sarah11918-patch-2
sb-tests2
seroval
server-islands-children
session-docs
single-file-build-2
slash-404-hint
slot-bug-1
solid-ecosystem-pkg
spike/app-setup
spike/autonav
spike/codehike
spike/context
spike/csr
spike/default-content
spike/incremental
spike/incremental-ii
spike/markdown-wasm
spike/render
spike/streaming
spike/svg
sqlite-test
squeal
ssr-redirect
stream-buffer
streaming
telemetry-audit-1
test/new-integrations-demo
test/new-ssr-demo
top-level-exports-integrations
ts-in-hoisted-script
ts-no-err
upd-vite-vendored
upgrade-deps
v1-beta
vercel-test
vite-fork
vscode-astro-global
vt-follow-redirects
warn-exp-flag
win
windows-tests-beta
wip-assets
wip-component-api-2
wip-docs-components
wip-docs-reference-gen
wip-fetch-cache
wip-fun-flags
wip-icons
wip-logging
wip-logging-saved
wip-mdc
wip-mdx-to-astro-js
wip-preview-command-integrations
wip-setup-content
wip-smoke
wip-speed-up-markdown
wip-stage
wip/react-19-test
Unnamed repository; edit this file 'description' to name the repository.
Age Commit message (Collapse ) Author Files Lines
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
* RC Release candidate
* Use the rc tag
* fix(#7923): do not throw on user { type } object
* chore: remove unused type export
* chore: guess it wasn't unused
Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
transitions (#8116)
back) (#8109)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* fix(node): delegate preview's not found and error handling to core/app
* add changeset
---------
Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
* chore: replace `class:list` implementation with `clsx`
* chore: remove Set support from `class:list` test
* chore: better class:list test
* Update packages/astro/src/runtime/server/render/component.ts
* normalize file paths for DataEntry.id
* add changeset
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
* fix: polyfill File using undici instead of node:buffer
* chore: changeset
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* fix: 404 response leads to infinite loop
* chore: changeset
---------
Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* feat: add polyfills for Stackblitz
* chore: changeset