Skip to content

std: make options a struct instance instead of a namespace - #18712

Merged
andrewrk merged 7 commits into
ziglang:masterfrom
Vexu:std.options
Feb 9, 2024
Merged

std: make options a struct instance instead of a namespace#18712
andrewrk merged 7 commits into
ziglang:masterfrom
Vexu:std.options

Conversation

@Vexu

@VexuVexu commented Jan 27, 2024

Copy link
Copy Markdown
Member

@VexuVexu added breaking Implementing this issue could cause existing code to no longer compile or have different behavior. standard library This issue involves writing Zig code for the standard library. labels Jan 27, 2024
@Vexu
Vexuforce-pushed the std.options branch 4 times, most recently from e2b58fa to 62e562cCompareJanuary 29, 2024 17:41
@andrewrk
andrewrk merged commit 54bbc73 into ziglang:masterFeb 9, 2024
@Vexu
Vexu deleted the std.options branch February 9, 2024 21:51
@nektro

Copy link
Copy Markdown
Contributor

missed this when it first came through but imo the name of std.Options does not effectively communicate it is specific to the stdlib

SuperAuguste pushed a commit to ziglibs/known-folders that referenced this pull request Feb 11, 2024
The async mode has been removed in ziglang/zig#18712
@Arnau478

Copy link
Copy Markdown
Contributor

As @nektro said, std.Options is quite a bad name if it's std-specific.

As a side proposal, maybe it would be better to create a system for generalized and consistent library options. The std shouldn't be any different than other libraries, after all...

mochalins added a commit to mochalins/network that referenced this pull request Feb 19, 2024
`std.io.is_async` no longer exists since ziglang/zig#18712. Removed all
references for compatibility with latest Zig `master`.
ikskuh pushed a commit to ikskuh/zig-network that referenced this pull request Feb 19, 2024
`std.io.is_async` no longer exists since ziglang/zig#18712. Removed all
references for compatibility with latest Zig `master`.
@kristoff-it

Copy link
Copy Markdown
Member

Release notes draft:

Std Options

Previously, when one wanted to override defaults, such as the logging function used by std.log, they would have to define std_options in their root file, like so:

pubconststd_options=struct {
pubconstlogFn=myLogFn;
};

Note how std_options above is a struct type definiton. In this release std_options is now an instance of std.Options, making the process of defining overrides less error-prone.

This is now how the code above would look like now:

pubconststd_options: std.Options= .{
.logFn=myLogFn,
};

And this is the definition of std.Options to see what else you can override.

TODO: explain that you can still override other stuff like the panic function in a different way because that's not a stdlib override

pubconstOptions=struct {
enable_segfault_handler: bool=debug.default_enable_segfault_handler,
/// Function used to implement `std.fs.cwd` for WASI.wasiCwd: fn () os.wasi.fd_t=fs.defaultWasiCwd,
/// The current log level.log_level: log.Level=log.default_level,
log_scope_levels: []constlog.ScopeLevel= &.{},
logFn: fn (
comptimemessage_level: log.Level,
comptimescope: @TypeOf(.enum_literal),
comptimeformat: []constu8,
args: anytype,
) void=log.defaultLog,
fmt_max_depth: usize=fmt.default_max_depth,
cryptoRandomSeed: fn (buffer: []u8) void=@import("crypto/tlcsprng.zig").defaultRandomSeed,
crypto_always_getrandom: bool=false,
crypto_fork_safety: bool=true,
/// By default Zig disables SIGPIPE by setting a "no-op" handler for it. Set this option/// to `true` to prevent that.////// Note that we use a "no-op" handler instead of SIG_IGN because it will not be inherited by/// any child process.////// SIGPIPE is triggered when a process attempts to write to a broken pipe. By default, SIGPIPE/// will terminate the process instead of exiting. It doesn't trigger the panic handler so in many/// cases it's unclear why the process was terminated. By capturing SIGPIPE instead, functions that/// write to broken pipes will return the EPIPE error (error.BrokenPipe) and the program can handle/// it like any other error.keep_sigpipe: bool=false,
/// By default, std.http.Client will support HTTPS connections. Set this option to `true` to/// disable TLS support.////// This will likely reduce the size of the binary, but it will also make it impossible to/// make a HTTPS connection.http_disable_tls: bool=false,
side_channels_mitigations: crypto.SideChannelsMitigations=crypto.default_side_channels_mitigations,
};

@andrewrkandrewrk added release notes This PR should be mentioned in the release notes. and removed release notes draft labels Apr 18, 2024
@andrewrkandrewrk added this to the 0.12.0 milestone Apr 18, 2024
TUSF pushed a commit to TUSF/zig that referenced this pull request May 9, 2024
std: make options a struct instance instead of a namespace
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breakingImplementing this issue could cause existing code to no longer compile or have different behavior.release notesThis PR should be mentioned in the release notes.standard libraryThis issue involves writing Zig code for the standard library.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make std_options a comptime struct instead of a namespace

5 participants

@Vexu@nektro@Arnau478@kristoff-it@andrewrk
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
std: make options a struct instance instead of a namespace by Vexu · Pull Request #18712 · ziglang/zig · GitHub
Skip to content

std: make options a struct instance instead of a namespace - #18712

Merged
andrewrk merged 7 commits into
ziglang:masterfrom
Vexu:std.options
Feb 9, 2024
Merged

std: make options a struct instance instead of a namespace#18712
andrewrk merged 7 commits into
ziglang:masterfrom
Vexu:std.options

Conversation

@Vexu

@VexuVexu commented Jan 27, 2024

Copy link
Copy Markdown
Member

@VexuVexu added breaking Implementing this issue could cause existing code to no longer compile or have different behavior. standard library This issue involves writing Zig code for the standard library. labels Jan 27, 2024
@Vexu
Vexuforce-pushed the std.options branch 4 times, most recently from e2b58fa to 62e562cCompareJanuary 29, 2024 17:41
@andrewrk
andrewrk merged commit 54bbc73 into ziglang:masterFeb 9, 2024
@Vexu
Vexu deleted the std.options branch February 9, 2024 21:51
@nektro

Copy link
Copy Markdown
Contributor

missed this when it first came through but imo the name of std.Options does not effectively communicate it is specific to the stdlib

SuperAuguste pushed a commit to ziglibs/known-folders that referenced this pull request Feb 11, 2024
The async mode has been removed in ziglang/zig#18712
@Arnau478

Copy link
Copy Markdown
Contributor

As @nektro said, std.Options is quite a bad name if it's std-specific.

As a side proposal, maybe it would be better to create a system for generalized and consistent library options. The std shouldn't be any different than other libraries, after all...

mochalins added a commit to mochalins/network that referenced this pull request Feb 19, 2024
`std.io.is_async` no longer exists since ziglang/zig#18712. Removed all
references for compatibility with latest Zig `master`.
ikskuh pushed a commit to ikskuh/zig-network that referenced this pull request Feb 19, 2024
`std.io.is_async` no longer exists since ziglang/zig#18712. Removed all
references for compatibility with latest Zig `master`.
@kristoff-it

Copy link
Copy Markdown
Member

Release notes draft:

Std Options

Previously, when one wanted to override defaults, such as the logging function used by std.log, they would have to define std_options in their root file, like so:

pubconststd_options=struct {
pubconstlogFn=myLogFn;
};

Note how std_options above is a struct type definiton. In this release std_options is now an instance of std.Options, making the process of defining overrides less error-prone.

This is now how the code above would look like now:

pubconststd_options: std.Options= .{
.logFn=myLogFn,
};

And this is the definition of std.Options to see what else you can override.

TODO: explain that you can still override other stuff like the panic function in a different way because that's not a stdlib override

pubconstOptions=struct {
enable_segfault_handler: bool=debug.default_enable_segfault_handler,
/// Function used to implement `std.fs.cwd` for WASI.wasiCwd: fn () os.wasi.fd_t=fs.defaultWasiCwd,
/// The current log level.log_level: log.Level=log.default_level,
log_scope_levels: []constlog.ScopeLevel= &.{},
logFn: fn (
comptimemessage_level: log.Level,
comptimescope: @TypeOf(.enum_literal),
comptimeformat: []constu8,
args: anytype,
) void=log.defaultLog,
fmt_max_depth: usize=fmt.default_max_depth,
cryptoRandomSeed: fn (buffer: []u8) void=@import("crypto/tlcsprng.zig").defaultRandomSeed,
crypto_always_getrandom: bool=false,
crypto_fork_safety: bool=true,
/// By default Zig disables SIGPIPE by setting a "no-op" handler for it. Set this option/// to `true` to prevent that.////// Note that we use a "no-op" handler instead of SIG_IGN because it will not be inherited by/// any child process.////// SIGPIPE is triggered when a process attempts to write to a broken pipe. By default, SIGPIPE/// will terminate the process instead of exiting. It doesn't trigger the panic handler so in many/// cases it's unclear why the process was terminated. By capturing SIGPIPE instead, functions that/// write to broken pipes will return the EPIPE error (error.BrokenPipe) and the program can handle/// it like any other error.keep_sigpipe: bool=false,
/// By default, std.http.Client will support HTTPS connections. Set this option to `true` to/// disable TLS support.////// This will likely reduce the size of the binary, but it will also make it impossible to/// make a HTTPS connection.http_disable_tls: bool=false,
side_channels_mitigations: crypto.SideChannelsMitigations=crypto.default_side_channels_mitigations,
};

@andrewrkandrewrk added release notes This PR should be mentioned in the release notes. and removed release notes draft labels Apr 18, 2024
@andrewrkandrewrk added this to the 0.12.0 milestone Apr 18, 2024
TUSF pushed a commit to TUSF/zig that referenced this pull request May 9, 2024
std: make options a struct instance instead of a namespace
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breakingImplementing this issue could cause existing code to no longer compile or have different behavior.release notesThis PR should be mentioned in the release notes.standard libraryThis issue involves writing Zig code for the standard library.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make std_options a comptime struct instead of a namespace

5 participants

@Vexu@nektro@Arnau478@kristoff-it@andrewrk
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' std: make options a struct instance instead of a namespace by Vexu · Pull Request #18712 · ziglang/zig · GitHub
Skip to content

std: make options a struct instance instead of a namespace - #18712

Merged
andrewrk merged 7 commits into
ziglang:masterfrom
Vexu:std.options
Feb 9, 2024
Merged

std: make options a struct instance instead of a namespace#18712
andrewrk merged 7 commits into
ziglang:masterfrom
Vexu:std.options

Conversation

@Vexu

@VexuVexu commented Jan 27, 2024

Copy link
Copy Markdown
Member

@VexuVexu added breaking Implementing this issue could cause existing code to no longer compile or have different behavior. standard library This issue involves writing Zig code for the standard library. labels Jan 27, 2024
@Vexu
Vexuforce-pushed the std.options branch 4 times, most recently from e2b58fa to 62e562cCompareJanuary 29, 2024 17:41
@andrewrk
andrewrk merged commit 54bbc73 into ziglang:masterFeb 9, 2024
@Vexu
Vexu deleted the std.options branch February 9, 2024 21:51
@nektro

Copy link
Copy Markdown
Contributor

missed this when it first came through but imo the name of std.Options does not effectively communicate it is specific to the stdlib

SuperAuguste pushed a commit to ziglibs/known-folders that referenced this pull request Feb 11, 2024
The async mode has been removed in ziglang/zig#18712
@Arnau478

Copy link
Copy Markdown
Contributor

As @nektro said, std.Options is quite a bad name if it's std-specific.

As a side proposal, maybe it would be better to create a system for generalized and consistent library options. The std shouldn't be any different than other libraries, after all...

mochalins added a commit to mochalins/network that referenced this pull request Feb 19, 2024
`std.io.is_async` no longer exists since ziglang/zig#18712. Removed all
references for compatibility with latest Zig `master`.
ikskuh pushed a commit to ikskuh/zig-network that referenced this pull request Feb 19, 2024
`std.io.is_async` no longer exists since ziglang/zig#18712. Removed all
references for compatibility with latest Zig `master`.
@kristoff-it

Copy link
Copy Markdown
Member

Release notes draft:

Std Options

Previously, when one wanted to override defaults, such as the logging function used by std.log, they would have to define std_options in their root file, like so:

pubconststd_options=struct {
pubconstlogFn=myLogFn;
};

Note how std_options above is a struct type definiton. In this release std_options is now an instance of std.Options, making the process of defining overrides less error-prone.

This is now how the code above would look like now:

pubconststd_options: std.Options= .{
.logFn=myLogFn,
};

And this is the definition of std.Options to see what else you can override.

TODO: explain that you can still override other stuff like the panic function in a different way because that's not a stdlib override

pubconstOptions=struct {
enable_segfault_handler: bool=debug.default_enable_segfault_handler,
/// Function used to implement `std.fs.cwd` for WASI.wasiCwd: fn () os.wasi.fd_t=fs.defaultWasiCwd,
/// The current log level.log_level: log.Level=log.default_level,
log_scope_levels: []constlog.ScopeLevel= &.{},
logFn: fn (
comptimemessage_level: log.Level,
comptimescope: @TypeOf(.enum_literal),
comptimeformat: []constu8,
args: anytype,
) void=log.defaultLog,
fmt_max_depth: usize=fmt.default_max_depth,
cryptoRandomSeed: fn (buffer: []u8) void=@import("crypto/tlcsprng.zig").defaultRandomSeed,
crypto_always_getrandom: bool=false,
crypto_fork_safety: bool=true,
/// By default Zig disables SIGPIPE by setting a "no-op" handler for it. Set this option/// to `true` to prevent that.////// Note that we use a "no-op" handler instead of SIG_IGN because it will not be inherited by/// any child process.////// SIGPIPE is triggered when a process attempts to write to a broken pipe. By default, SIGPIPE/// will terminate the process instead of exiting. It doesn't trigger the panic handler so in many/// cases it's unclear why the process was terminated. By capturing SIGPIPE instead, functions that/// write to broken pipes will return the EPIPE error (error.BrokenPipe) and the program can handle/// it like any other error.keep_sigpipe: bool=false,
/// By default, std.http.Client will support HTTPS connections. Set this option to `true` to/// disable TLS support.////// This will likely reduce the size of the binary, but it will also make it impossible to/// make a HTTPS connection.http_disable_tls: bool=false,
side_channels_mitigations: crypto.SideChannelsMitigations=crypto.default_side_channels_mitigations,
};

@andrewrkandrewrk added release notes This PR should be mentioned in the release notes. and removed release notes draft labels Apr 18, 2024
@andrewrkandrewrk added this to the 0.12.0 milestone Apr 18, 2024
TUSF pushed a commit to TUSF/zig that referenced this pull request May 9, 2024
std: make options a struct instance instead of a namespace
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breakingImplementing this issue could cause existing code to no longer compile or have different behavior.release notesThis PR should be mentioned in the release notes.standard libraryThis issue involves writing Zig code for the standard library.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make std_options a comptime struct instead of a namespace

5 participants

@Vexu@nektro@Arnau478@kristoff-it@andrewrk
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' std: make options a struct instance instead of a namespace by Vexu · Pull Request #18712 · ziglang/zig · GitHub
Skip to content

std: make options a struct instance instead of a namespace - #18712

Merged
andrewrk merged 7 commits into
ziglang:masterfrom
Vexu:std.options
Feb 9, 2024
Merged

std: make options a struct instance instead of a namespace#18712
andrewrk merged 7 commits into
ziglang:masterfrom
Vexu:std.options

Conversation

@Vexu

@VexuVexu commented Jan 27, 2024

Copy link
Copy Markdown
Member

@VexuVexu added breaking Implementing this issue could cause existing code to no longer compile or have different behavior. standard library This issue involves writing Zig code for the standard library. labels Jan 27, 2024
@Vexu
Vexuforce-pushed the std.options branch 4 times, most recently from e2b58fa to 62e562cCompareJanuary 29, 2024 17:41
@andrewrk
andrewrk merged commit 54bbc73 into ziglang:masterFeb 9, 2024
@Vexu
Vexu deleted the std.options branch February 9, 2024 21:51
@nektro

Copy link
Copy Markdown
Contributor

missed this when it first came through but imo the name of std.Options does not effectively communicate it is specific to the stdlib

SuperAuguste pushed a commit to ziglibs/known-folders that referenced this pull request Feb 11, 2024
The async mode has been removed in ziglang/zig#18712
@Arnau478

Copy link
Copy Markdown
Contributor

As @nektro said, std.Options is quite a bad name if it's std-specific.

As a side proposal, maybe it would be better to create a system for generalized and consistent library options. The std shouldn't be any different than other libraries, after all...

mochalins added a commit to mochalins/network that referenced this pull request Feb 19, 2024
`std.io.is_async` no longer exists since ziglang/zig#18712. Removed all
references for compatibility with latest Zig `master`.
ikskuh pushed a commit to ikskuh/zig-network that referenced this pull request Feb 19, 2024
`std.io.is_async` no longer exists since ziglang/zig#18712. Removed all
references for compatibility with latest Zig `master`.
@kristoff-it

Copy link
Copy Markdown
Member

Release notes draft:

Std Options

Previously, when one wanted to override defaults, such as the logging function used by std.log, they would have to define std_options in their root file, like so:

pubconststd_options=struct {
pubconstlogFn=myLogFn;
};

Note how std_options above is a struct type definiton. In this release std_options is now an instance of std.Options, making the process of defining overrides less error-prone.

This is now how the code above would look like now:

pubconststd_options: std.Options= .{
.logFn=myLogFn,
};

And this is the definition of std.Options to see what else you can override.

TODO: explain that you can still override other stuff like the panic function in a different way because that's not a stdlib override

pubconstOptions=struct {
enable_segfault_handler: bool=debug.default_enable_segfault_handler,
/// Function used to implement `std.fs.cwd` for WASI.wasiCwd: fn () os.wasi.fd_t=fs.defaultWasiCwd,
/// The current log level.log_level: log.Level=log.default_level,
log_scope_levels: []constlog.ScopeLevel= &.{},
logFn: fn (
comptimemessage_level: log.Level,
comptimescope: @TypeOf(.enum_literal),
comptimeformat: []constu8,
args: anytype,
) void=log.defaultLog,
fmt_max_depth: usize=fmt.default_max_depth,
cryptoRandomSeed: fn (buffer: []u8) void=@import("crypto/tlcsprng.zig").defaultRandomSeed,
crypto_always_getrandom: bool=false,
crypto_fork_safety: bool=true,
/// By default Zig disables SIGPIPE by setting a "no-op" handler for it. Set this option/// to `true` to prevent that.////// Note that we use a "no-op" handler instead of SIG_IGN because it will not be inherited by/// any child process.////// SIGPIPE is triggered when a process attempts to write to a broken pipe. By default, SIGPIPE/// will terminate the process instead of exiting. It doesn't trigger the panic handler so in many/// cases it's unclear why the process was terminated. By capturing SIGPIPE instead, functions that/// write to broken pipes will return the EPIPE error (error.BrokenPipe) and the program can handle/// it like any other error.keep_sigpipe: bool=false,
/// By default, std.http.Client will support HTTPS connections. Set this option to `true` to/// disable TLS support.////// This will likely reduce the size of the binary, but it will also make it impossible to/// make a HTTPS connection.http_disable_tls: bool=false,
side_channels_mitigations: crypto.SideChannelsMitigations=crypto.default_side_channels_mitigations,
};

@andrewrkandrewrk added release notes This PR should be mentioned in the release notes. and removed release notes draft labels Apr 18, 2024
@andrewrkandrewrk added this to the 0.12.0 milestone Apr 18, 2024
TUSF pushed a commit to TUSF/zig that referenced this pull request May 9, 2024
std: make options a struct instance instead of a namespace
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breakingImplementing this issue could cause existing code to no longer compile or have different behavior.release notesThis PR should be mentioned in the release notes.standard libraryThis issue involves writing Zig code for the standard library.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make std_options a comptime struct instead of a namespace

5 participants

@Vexu@nektro@Arnau478@kristoff-it@andrewrk
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' std: make options a struct instance instead of a namespace by Vexu · Pull Request #18712 · ziglang/zig · GitHub
Skip to content

std: make options a struct instance instead of a namespace - #18712

Merged
andrewrk merged 7 commits into
ziglang:masterfrom
Vexu:std.options
Feb 9, 2024
Merged

std: make options a struct instance instead of a namespace#18712
andrewrk merged 7 commits into
ziglang:masterfrom
Vexu:std.options

Conversation

@Vexu

@VexuVexu commented Jan 27, 2024

Copy link
Copy Markdown
Member

@VexuVexu added breaking Implementing this issue could cause existing code to no longer compile or have different behavior. standard library This issue involves writing Zig code for the standard library. labels Jan 27, 2024
@Vexu
Vexuforce-pushed the std.options branch 4 times, most recently from e2b58fa to 62e562cCompareJanuary 29, 2024 17:41
@andrewrk
andrewrk merged commit 54bbc73 into ziglang:masterFeb 9, 2024
@Vexu
Vexu deleted the std.options branch February 9, 2024 21:51
@nektro

Copy link
Copy Markdown
Contributor

missed this when it first came through but imo the name of std.Options does not effectively communicate it is specific to the stdlib

SuperAuguste pushed a commit to ziglibs/known-folders that referenced this pull request Feb 11, 2024
The async mode has been removed in ziglang/zig#18712
@Arnau478

Copy link
Copy Markdown
Contributor

As @nektro said, std.Options is quite a bad name if it's std-specific.

As a side proposal, maybe it would be better to create a system for generalized and consistent library options. The std shouldn't be any different than other libraries, after all...

mochalins added a commit to mochalins/network that referenced this pull request Feb 19, 2024
`std.io.is_async` no longer exists since ziglang/zig#18712. Removed all
references for compatibility with latest Zig `master`.
ikskuh pushed a commit to ikskuh/zig-network that referenced this pull request Feb 19, 2024
`std.io.is_async` no longer exists since ziglang/zig#18712. Removed all
references for compatibility with latest Zig `master`.
@kristoff-it

Copy link
Copy Markdown
Member

Release notes draft:

Std Options

Previously, when one wanted to override defaults, such as the logging function used by std.log, they would have to define std_options in their root file, like so:

pubconststd_options=struct {
pubconstlogFn=myLogFn;
};

Note how std_options above is a struct type definiton. In this release std_options is now an instance of std.Options, making the process of defining overrides less error-prone.

This is now how the code above would look like now:

pubconststd_options: std.Options= .{
.logFn=myLogFn,
};

And this is the definition of std.Options to see what else you can override.

TODO: explain that you can still override other stuff like the panic function in a different way because that's not a stdlib override

pubconstOptions=struct {
enable_segfault_handler: bool=debug.default_enable_segfault_handler,
/// Function used to implement `std.fs.cwd` for WASI.wasiCwd: fn () os.wasi.fd_t=fs.defaultWasiCwd,
/// The current log level.log_level: log.Level=log.default_level,
log_scope_levels: []constlog.ScopeLevel= &.{},
logFn: fn (
comptimemessage_level: log.Level,
comptimescope: @TypeOf(.enum_literal),
comptimeformat: []constu8,
args: anytype,
) void=log.defaultLog,
fmt_max_depth: usize=fmt.default_max_depth,
cryptoRandomSeed: fn (buffer: []u8) void=@import("crypto/tlcsprng.zig").defaultRandomSeed,
crypto_always_getrandom: bool=false,
crypto_fork_safety: bool=true,
/// By default Zig disables SIGPIPE by setting a "no-op" handler for it. Set this option/// to `true` to prevent that.////// Note that we use a "no-op" handler instead of SIG_IGN because it will not be inherited by/// any child process.////// SIGPIPE is triggered when a process attempts to write to a broken pipe. By default, SIGPIPE/// will terminate the process instead of exiting. It doesn't trigger the panic handler so in many/// cases it's unclear why the process was terminated. By capturing SIGPIPE instead, functions that/// write to broken pipes will return the EPIPE error (error.BrokenPipe) and the program can handle/// it like any other error.keep_sigpipe: bool=false,
/// By default, std.http.Client will support HTTPS connections. Set this option to `true` to/// disable TLS support.////// This will likely reduce the size of the binary, but it will also make it impossible to/// make a HTTPS connection.http_disable_tls: bool=false,
side_channels_mitigations: crypto.SideChannelsMitigations=crypto.default_side_channels_mitigations,
};

@andrewrkandrewrk added release notes This PR should be mentioned in the release notes. and removed release notes draft labels Apr 18, 2024
@andrewrkandrewrk added this to the 0.12.0 milestone Apr 18, 2024
TUSF pushed a commit to TUSF/zig that referenced this pull request May 9, 2024
std: make options a struct instance instead of a namespace
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breakingImplementing this issue could cause existing code to no longer compile or have different behavior.release notesThis PR should be mentioned in the release notes.standard libraryThis issue involves writing Zig code for the standard library.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make std_options a comptime struct instead of a namespace

5 participants

@Vexu@nektro@Arnau478@kristoff-it@andrewrk
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' std: make options a struct instance instead of a namespace by Vexu · Pull Request #18712 · ziglang/zig · GitHub
Skip to content

std: make options a struct instance instead of a namespace - #18712

Merged
andrewrk merged 7 commits into
ziglang:masterfrom
Vexu:std.options
Feb 9, 2024
Merged

std: make options a struct instance instead of a namespace#18712
andrewrk merged 7 commits into
ziglang:masterfrom
Vexu:std.options

Conversation

@Vexu

@VexuVexu commented Jan 27, 2024

Copy link
Copy Markdown
Member

@VexuVexu added breaking Implementing this issue could cause existing code to no longer compile or have different behavior. standard library This issue involves writing Zig code for the standard library. labels Jan 27, 2024
@Vexu
Vexuforce-pushed the std.options branch 4 times, most recently from e2b58fa to 62e562cCompareJanuary 29, 2024 17:41
@andrewrk
andrewrk merged commit 54bbc73 into ziglang:masterFeb 9, 2024
@Vexu
Vexu deleted the std.options branch February 9, 2024 21:51
@nektro

Copy link
Copy Markdown
Contributor

missed this when it first came through but imo the name of std.Options does not effectively communicate it is specific to the stdlib

SuperAuguste pushed a commit to ziglibs/known-folders that referenced this pull request Feb 11, 2024
The async mode has been removed in ziglang/zig#18712
@Arnau478

Copy link
Copy Markdown
Contributor

As @nektro said, std.Options is quite a bad name if it's std-specific.

As a side proposal, maybe it would be better to create a system for generalized and consistent library options. The std shouldn't be any different than other libraries, after all...

mochalins added a commit to mochalins/network that referenced this pull request Feb 19, 2024
`std.io.is_async` no longer exists since ziglang/zig#18712. Removed all
references for compatibility with latest Zig `master`.
ikskuh pushed a commit to ikskuh/zig-network that referenced this pull request Feb 19, 2024
`std.io.is_async` no longer exists since ziglang/zig#18712. Removed all
references for compatibility with latest Zig `master`.
@kristoff-it

Copy link
Copy Markdown
Member

Release notes draft:

Std Options

Previously, when one wanted to override defaults, such as the logging function used by std.log, they would have to define std_options in their root file, like so:

pubconststd_options=struct {
pubconstlogFn=myLogFn;
};

Note how std_options above is a struct type definiton. In this release std_options is now an instance of std.Options, making the process of defining overrides less error-prone.

This is now how the code above would look like now:

pubconststd_options: std.Options= .{
.logFn=myLogFn,
};

And this is the definition of std.Options to see what else you can override.

TODO: explain that you can still override other stuff like the panic function in a different way because that's not a stdlib override

pubconstOptions=struct {
enable_segfault_handler: bool=debug.default_enable_segfault_handler,
/// Function used to implement `std.fs.cwd` for WASI.wasiCwd: fn () os.wasi.fd_t=fs.defaultWasiCwd,
/// The current log level.log_level: log.Level=log.default_level,
log_scope_levels: []constlog.ScopeLevel= &.{},
logFn: fn (
comptimemessage_level: log.Level,
comptimescope: @TypeOf(.enum_literal),
comptimeformat: []constu8,
args: anytype,
) void=log.defaultLog,
fmt_max_depth: usize=fmt.default_max_depth,
cryptoRandomSeed: fn (buffer: []u8) void=@import("crypto/tlcsprng.zig").defaultRandomSeed,
crypto_always_getrandom: bool=false,
crypto_fork_safety: bool=true,
/// By default Zig disables SIGPIPE by setting a "no-op" handler for it. Set this option/// to `true` to prevent that.////// Note that we use a "no-op" handler instead of SIG_IGN because it will not be inherited by/// any child process.////// SIGPIPE is triggered when a process attempts to write to a broken pipe. By default, SIGPIPE/// will terminate the process instead of exiting. It doesn't trigger the panic handler so in many/// cases it's unclear why the process was terminated. By capturing SIGPIPE instead, functions that/// write to broken pipes will return the EPIPE error (error.BrokenPipe) and the program can handle/// it like any other error.keep_sigpipe: bool=false,
/// By default, std.http.Client will support HTTPS connections. Set this option to `true` to/// disable TLS support.////// This will likely reduce the size of the binary, but it will also make it impossible to/// make a HTTPS connection.http_disable_tls: bool=false,
side_channels_mitigations: crypto.SideChannelsMitigations=crypto.default_side_channels_mitigations,
};

@andrewrkandrewrk added release notes This PR should be mentioned in the release notes. and removed release notes draft labels Apr 18, 2024
@andrewrkandrewrk added this to the 0.12.0 milestone Apr 18, 2024
TUSF pushed a commit to TUSF/zig that referenced this pull request May 9, 2024
std: make options a struct instance instead of a namespace
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breakingImplementing this issue could cause existing code to no longer compile or have different behavior.release notesThis PR should be mentioned in the release notes.standard libraryThis issue involves writing Zig code for the standard library.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make std_options a comptime struct instead of a namespace

5 participants

@Vexu@nektro@Arnau478@kristoff-it@andrewrk
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' std: make options a struct instance instead of a namespace by Vexu · Pull Request #18712 · ziglang/zig · GitHub
Skip to content

std: make options a struct instance instead of a namespace - #18712

Merged
andrewrk merged 7 commits into
ziglang:masterfrom
Vexu:std.options
Feb 9, 2024
Merged

std: make options a struct instance instead of a namespace#18712
andrewrk merged 7 commits into
ziglang:masterfrom
Vexu:std.options

Conversation

@Vexu

@VexuVexu commented Jan 27, 2024

Copy link
Copy Markdown
Member

@VexuVexu added breaking Implementing this issue could cause existing code to no longer compile or have different behavior. standard library This issue involves writing Zig code for the standard library. labels Jan 27, 2024
@Vexu
Vexuforce-pushed the std.options branch 4 times, most recently from e2b58fa to 62e562cCompareJanuary 29, 2024 17:41
@andrewrk
andrewrk merged commit 54bbc73 into ziglang:masterFeb 9, 2024
@Vexu
Vexu deleted the std.options branch February 9, 2024 21:51
@nektro

Copy link
Copy Markdown
Contributor

missed this when it first came through but imo the name of std.Options does not effectively communicate it is specific to the stdlib

SuperAuguste pushed a commit to ziglibs/known-folders that referenced this pull request Feb 11, 2024
The async mode has been removed in ziglang/zig#18712
@Arnau478

Copy link
Copy Markdown
Contributor

As @nektro said, std.Options is quite a bad name if it's std-specific.

As a side proposal, maybe it would be better to create a system for generalized and consistent library options. The std shouldn't be any different than other libraries, after all...

mochalins added a commit to mochalins/network that referenced this pull request Feb 19, 2024
`std.io.is_async` no longer exists since ziglang/zig#18712. Removed all
references for compatibility with latest Zig `master`.
ikskuh pushed a commit to ikskuh/zig-network that referenced this pull request Feb 19, 2024
`std.io.is_async` no longer exists since ziglang/zig#18712. Removed all
references for compatibility with latest Zig `master`.
@kristoff-it

Copy link
Copy Markdown
Member

Release notes draft:

Std Options

Previously, when one wanted to override defaults, such as the logging function used by std.log, they would have to define std_options in their root file, like so:

pubconststd_options=struct {
pubconstlogFn=myLogFn;
};

Note how std_options above is a struct type definiton. In this release std_options is now an instance of std.Options, making the process of defining overrides less error-prone.

This is now how the code above would look like now:

pubconststd_options: std.Options= .{
.logFn=myLogFn,
};

And this is the definition of std.Options to see what else you can override.

TODO: explain that you can still override other stuff like the panic function in a different way because that's not a stdlib override

pubconstOptions=struct {
enable_segfault_handler: bool=debug.default_enable_segfault_handler,
/// Function used to implement `std.fs.cwd` for WASI.wasiCwd: fn () os.wasi.fd_t=fs.defaultWasiCwd,
/// The current log level.log_level: log.Level=log.default_level,
log_scope_levels: []constlog.ScopeLevel= &.{},
logFn: fn (
comptimemessage_level: log.Level,
comptimescope: @TypeOf(.enum_literal),
comptimeformat: []constu8,
args: anytype,
) void=log.defaultLog,
fmt_max_depth: usize=fmt.default_max_depth,
cryptoRandomSeed: fn (buffer: []u8) void=@import("crypto/tlcsprng.zig").defaultRandomSeed,
crypto_always_getrandom: bool=false,
crypto_fork_safety: bool=true,
/// By default Zig disables SIGPIPE by setting a "no-op" handler for it. Set this option/// to `true` to prevent that.////// Note that we use a "no-op" handler instead of SIG_IGN because it will not be inherited by/// any child process.////// SIGPIPE is triggered when a process attempts to write to a broken pipe. By default, SIGPIPE/// will terminate the process instead of exiting. It doesn't trigger the panic handler so in many/// cases it's unclear why the process was terminated. By capturing SIGPIPE instead, functions that/// write to broken pipes will return the EPIPE error (error.BrokenPipe) and the program can handle/// it like any other error.keep_sigpipe: bool=false,
/// By default, std.http.Client will support HTTPS connections. Set this option to `true` to/// disable TLS support.////// This will likely reduce the size of the binary, but it will also make it impossible to/// make a HTTPS connection.http_disable_tls: bool=false,
side_channels_mitigations: crypto.SideChannelsMitigations=crypto.default_side_channels_mitigations,
};

@andrewrkandrewrk added release notes This PR should be mentioned in the release notes. and removed release notes draft labels Apr 18, 2024
@andrewrkandrewrk added this to the 0.12.0 milestone Apr 18, 2024
TUSF pushed a commit to TUSF/zig that referenced this pull request May 9, 2024
std: make options a struct instance instead of a namespace
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breakingImplementing this issue could cause existing code to no longer compile or have different behavior.release notesThis PR should be mentioned in the release notes.standard libraryThis issue involves writing Zig code for the standard library.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make std_options a comptime struct instead of a namespace

5 participants

@Vexu@nektro@Arnau478@kristoff-it@andrewrk
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); std: make options a struct instance instead of a namespace by Vexu · Pull Request #18712 · ziglang/zig · GitHub
Skip to content

std: make options a struct instance instead of a namespace - #18712

Merged
andrewrk merged 7 commits into
ziglang:masterfrom
Vexu:std.options
Feb 9, 2024
Merged

std: make options a struct instance instead of a namespace#18712
andrewrk merged 7 commits into
ziglang:masterfrom
Vexu:std.options

Conversation

@Vexu

@VexuVexu commented Jan 27, 2024

Copy link
Copy Markdown
Member

@VexuVexu added breaking Implementing this issue could cause existing code to no longer compile or have different behavior. standard library This issue involves writing Zig code for the standard library. labels Jan 27, 2024
@Vexu
Vexuforce-pushed the std.options branch 4 times, most recently from e2b58fa to 62e562cCompareJanuary 29, 2024 17:41
@andrewrk
andrewrk merged commit 54bbc73 into ziglang:masterFeb 9, 2024
@Vexu
Vexu deleted the std.options branch February 9, 2024 21:51
@nektro

Copy link
Copy Markdown
Contributor

missed this when it first came through but imo the name of std.Options does not effectively communicate it is specific to the stdlib

SuperAuguste pushed a commit to ziglibs/known-folders that referenced this pull request Feb 11, 2024
The async mode has been removed in ziglang/zig#18712
@Arnau478

Copy link
Copy Markdown
Contributor

As @nektro said, std.Options is quite a bad name if it's std-specific.

As a side proposal, maybe it would be better to create a system for generalized and consistent library options. The std shouldn't be any different than other libraries, after all...

mochalins added a commit to mochalins/network that referenced this pull request Feb 19, 2024
`std.io.is_async` no longer exists since ziglang/zig#18712. Removed all
references for compatibility with latest Zig `master`.
ikskuh pushed a commit to ikskuh/zig-network that referenced this pull request Feb 19, 2024
`std.io.is_async` no longer exists since ziglang/zig#18712. Removed all
references for compatibility with latest Zig `master`.
@kristoff-it

Copy link
Copy Markdown
Member

Release notes draft:

Std Options

Previously, when one wanted to override defaults, such as the logging function used by std.log, they would have to define std_options in their root file, like so:

pubconststd_options=struct {
pubconstlogFn=myLogFn;
};

Note how std_options above is a struct type definiton. In this release std_options is now an instance of std.Options, making the process of defining overrides less error-prone.

This is now how the code above would look like now:

pubconststd_options: std.Options= .{
.logFn=myLogFn,
};

And this is the definition of std.Options to see what else you can override.

TODO: explain that you can still override other stuff like the panic function in a different way because that's not a stdlib override

pubconstOptions=struct {
enable_segfault_handler: bool=debug.default_enable_segfault_handler,
/// Function used to implement `std.fs.cwd` for WASI.wasiCwd: fn () os.wasi.fd_t=fs.defaultWasiCwd,
/// The current log level.log_level: log.Level=log.default_level,
log_scope_levels: []constlog.ScopeLevel= &.{},
logFn: fn (
comptimemessage_level: log.Level,
comptimescope: @TypeOf(.enum_literal),
comptimeformat: []constu8,
args: anytype,
) void=log.defaultLog,
fmt_max_depth: usize=fmt.default_max_depth,
cryptoRandomSeed: fn (buffer: []u8) void=@import("crypto/tlcsprng.zig").defaultRandomSeed,
crypto_always_getrandom: bool=false,
crypto_fork_safety: bool=true,
/// By default Zig disables SIGPIPE by setting a "no-op" handler for it. Set this option/// to `true` to prevent that.////// Note that we use a "no-op" handler instead of SIG_IGN because it will not be inherited by/// any child process.////// SIGPIPE is triggered when a process attempts to write to a broken pipe. By default, SIGPIPE/// will terminate the process instead of exiting. It doesn't trigger the panic handler so in many/// cases it's unclear why the process was terminated. By capturing SIGPIPE instead, functions that/// write to broken pipes will return the EPIPE error (error.BrokenPipe) and the program can handle/// it like any other error.keep_sigpipe: bool=false,
/// By default, std.http.Client will support HTTPS connections. Set this option to `true` to/// disable TLS support.////// This will likely reduce the size of the binary, but it will also make it impossible to/// make a HTTPS connection.http_disable_tls: bool=false,
side_channels_mitigations: crypto.SideChannelsMitigations=crypto.default_side_channels_mitigations,
};

@andrewrkandrewrk added release notes This PR should be mentioned in the release notes. and removed release notes draft labels Apr 18, 2024
@andrewrkandrewrk added this to the 0.12.0 milestone Apr 18, 2024
TUSF pushed a commit to TUSF/zig that referenced this pull request May 9, 2024
std: make options a struct instance instead of a namespace
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breakingImplementing this issue could cause existing code to no longer compile or have different behavior.release notesThis PR should be mentioned in the release notes.standard libraryThis issue involves writing Zig code for the standard library.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make std_options a comptime struct instead of a namespace

5 participants

@Vexu@nektro@Arnau478@kristoff-it@andrewrk