mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-19 10:16:12 +03:00

This introduces a new package `src/synthetic` for generating synthetic data, currently primarily for benchmarking but other use cases can emerge. The synthetic package exports a runtime-dispatched type `Generator` that can generate data of various types. To start, we have a bytes, utf8, and OSC generator. The goal of each generator is to expose knobs to tune the probabilities of various outcomes. For example, the UTF-8 generator has a knob to tune the probability of generating 1, 2, 3, or 4-byte UTF-8 sequences. Ultimately, the goal is to be able to collect probability data empirically that we can then use for benchmarks so we can optimize various parts of the codebase on real-world data shape distributions.
24 lines
917 B
Zig
24 lines
917 B
Zig
//! The synthetic package contains an abstraction for generating
|
|
//! synthetic data. The motivating use case for this package is to
|
|
//! generate synthetic data for benchmarking, but it may also expand
|
|
//! to other use cases such as fuzzing (e.g. to generate a corpus
|
|
//! rather than directly fuzzing).
|
|
//!
|
|
//! The generators in this package are typically not performant
|
|
//! enough to be streamed in real time. They should instead be
|
|
//! used to generate a large amount of data in a single go
|
|
//! and then streamed from there.
|
|
//!
|
|
//! The generators are aimed for terminal emulation, but the package
|
|
//! is not limited to that and we may want to extract this to a
|
|
//! standalone package one day.
|
|
|
|
pub const Generator = @import("Generator.zig");
|
|
pub const Bytes = @import("Bytes.zig");
|
|
pub const Utf8 = @import("Utf8.zig");
|
|
pub const Osc = @import("Osc.zig");
|
|
|
|
test {
|
|
@import("std").testing.refAllDecls(@This());
|
|
}
|