synthra 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.rspec +4 -0
- data/.rubocop.yml +40 -0
- data/.yardopts +18 -0
- data/ACCESS_DOCS.md +116 -0
- data/ADVANCED_FEATURES_SUMMARY.md +245 -0
- data/CHANGELOG.md +498 -0
- data/CODE_OF_CONDUCT.md +122 -0
- data/CONTRIBUTING.md +307 -0
- data/DOCUMENTATION.md +204 -0
- data/DOCUMENTATION_GUIDE.md +194 -0
- data/LICENSE +22 -0
- data/README.md +1458 -0
- data/Rakefile +128 -0
- data/benchmark/README.md +591 -0
- data/benchmark/batch_generation.rb +63 -0
- data/benchmark/engine_comparison.rb +295 -0
- data/benchmark/single_record.rb +108 -0
- data/benchmark/streaming.rb +74 -0
- data/docs/ACTIVERECORD_INFERENCE.md +524 -0
- data/docs/API_SERVER.md +278 -0
- data/docs/CONFIG_FILE.md +315 -0
- data/docs/DATA_CONTRACTS.md +312 -0
- data/docs/ENHANCED_REPL.md +304 -0
- data/docs/FACTORY_BOT.md +271 -0
- data/docs/GITHUB_ACTION.md +420 -0
- data/docs/GRAPHQL_EXPORT.md +303 -0
- data/docs/GRAPHQL_FEDERATION.md +651 -0
- data/docs/HOW_TO_GENERATE_DOCS.md +252 -0
- data/docs/LSP.md +189 -0
- data/docs/MIGRATION_GENERATOR.md +547 -0
- data/docs/MOCK_SERVER.md +280 -0
- data/docs/NATIVE_ENGINE.md +298 -0
- data/docs/OPENAPI_EXPORT.md +252 -0
- data/docs/PERFORMANCE_MODE.md +228 -0
- data/docs/PERSONAS.md +547 -0
- data/docs/PROPERTY_TESTING.md +284 -0
- data/docs/PROTOBUF_EXPORT.md +276 -0
- data/docs/QUALITY_METRICS.md +555 -0
- data/docs/QUICK_REFERENCE.md +88 -0
- data/docs/RAILS_ENGINE.md +404 -0
- data/docs/RAILS_INTEGRATION.md +454 -0
- data/docs/README.md +175 -0
- data/docs/REPL_QUICK_REFERENCE.md +149 -0
- data/docs/RUST_INTEGRATION_GUIDE.md +1376 -0
- data/docs/SCENARIOS.md +576 -0
- data/docs/SECURITY_TESTING.md +318 -0
- data/docs/SNAPSHOT_TESTING.md +308 -0
- data/docs/STRING_TEXT_TYPES_REFERENCE.md +512 -0
- data/docs/TERRAFORM_EXPORT.md +447 -0
- data/docs/TIME_TRAVEL.md +507 -0
- data/docs/USAGE_GUIDE.md +980 -0
- data/docs/WEBHOOK_SIMULATOR.md +579 -0
- data/docs/advanced_features.md +183 -0
- data/docs/api_reference.md +153 -0
- data/docs/behaviors.md +138 -0
- data/docs/best_practices.md +191 -0
- data/docs/dsl_reference.md +172 -0
- data/docs/examples.md +162 -0
- data/docs/generation_modes.md +125 -0
- data/docs/getting_started.md +92 -0
- data/docs/index.html +177 -0
- data/docs/strategic/CLOUD_REGISTRY_ARCHITECTURE.md +268 -0
- data/docs/strategic/SIMD_OPTIMIZATION_STRATEGY.md +153 -0
- data/docs/troubleshooting.md +215 -0
- data/docs/type_reference.md +224 -0
- data/examples/hostile_mode_demo.rb +64 -0
- data/exe/synthra +6 -0
- data/ext/synthra_native/Cargo.lock +972 -0
- data/ext/synthra_native/Cargo.toml +46 -0
- data/ext/synthra_native/extconf.rb +41 -0
- data/ext/synthra_native/src/generator.rs +397 -0
- data/ext/synthra_native/src/lib.rs +229 -0
- data/ext/synthra_native/src/types.rs +1485 -0
- data/lib/generators/synthra/install_generator.rb +86 -0
- data/lib/generators/synthra/templates/api_response.dsl +15 -0
- data/lib/generators/synthra/templates/fake_data.rake +116 -0
- data/lib/generators/synthra/templates/synthra.yml +31 -0
- data/lib/generators/synthra/templates/synthra_support.rb +19 -0
- data/lib/generators/synthra/templates/user.dsl +11 -0
- data/lib/synthra/activerecord_inference.rb +394 -0
- data/lib/synthra/api.rb +381 -0
- data/lib/synthra/api_server.rb +718 -0
- data/lib/synthra/behaviors/applicator.rb +165 -0
- data/lib/synthra/behaviors/base.rb +155 -0
- data/lib/synthra/behaviors/close_connection.rb +60 -0
- data/lib/synthra/behaviors/deprecated.rb +100 -0
- data/lib/synthra/behaviors/failure.rb +69 -0
- data/lib/synthra/behaviors/latency.rb +103 -0
- data/lib/synthra/behaviors/partial_data.rb +83 -0
- data/lib/synthra/behaviors/randomize_order.rb +74 -0
- data/lib/synthra/behaviors/registry.rb +238 -0
- data/lib/synthra/behaviors/simulate_error.rb +79 -0
- data/lib/synthra/cli/commands/base.rb +105 -0
- data/lib/synthra/cli/commands/diff.rb +227 -0
- data/lib/synthra/cli/commands/docs.rb +67 -0
- data/lib/synthra/cli/commands/export.rb +150 -0
- data/lib/synthra/cli/commands/generate.rb +72 -0
- data/lib/synthra/cli/commands/import.rb +80 -0
- data/lib/synthra/cli/commands/lint.rb +53 -0
- data/lib/synthra/cli/commands/live.rb +57 -0
- data/lib/synthra/cli/commands/seed.rb +99 -0
- data/lib/synthra/cli/commands/validate.rb +28 -0
- data/lib/synthra/cli.rb +2471 -0
- data/lib/synthra/config_file.rb +129 -0
- data/lib/synthra/configuration.rb +281 -0
- data/lib/synthra/contracts_registry.rb +408 -0
- data/lib/synthra/database_seeder.rb +268 -0
- data/lib/synthra/deterministic_ids.rb +218 -0
- data/lib/synthra/documentation_generator.rb +414 -0
- data/lib/synthra/engine.rb +251 -0
- data/lib/synthra/errors.rb +1169 -0
- data/lib/synthra/export/base.rb +85 -0
- data/lib/synthra/export/csv.rb +101 -0
- data/lib/synthra/export/graphql.rb +266 -0
- data/lib/synthra/export/graphql_federation.rb +377 -0
- data/lib/synthra/export/graphviz.rb +258 -0
- data/lib/synthra/export/javascript.rb +327 -0
- data/lib/synthra/export/json_data.rb +61 -0
- data/lib/synthra/export/json_schema.rb +290 -0
- data/lib/synthra/export/openapi.rb +514 -0
- data/lib/synthra/export/protobuf.rb +483 -0
- data/lib/synthra/export/python.rb +560 -0
- data/lib/synthra/export/sql.rb +381 -0
- data/lib/synthra/export/sql_insert.rb +152 -0
- data/lib/synthra/export/terraform.rb +501 -0
- data/lib/synthra/export/type_mapping.rb +389 -0
- data/lib/synthra/export/typescript.rb +300 -0
- data/lib/synthra/export/xml_data.rb +104 -0
- data/lib/synthra/export/yaml_data.rb +56 -0
- data/lib/synthra/export.rb +404 -0
- data/lib/synthra/factory_bot_integration.rb +157 -0
- data/lib/synthra/field.rb +440 -0
- data/lib/synthra/functions/registry.rb +104 -0
- data/lib/synthra/generator/context.rb +372 -0
- data/lib/synthra/generator/engine.rb +336 -0
- data/lib/synthra/generator/faker_adapter.rb +425 -0
- data/lib/synthra/generator/modes.rb +444 -0
- data/lib/synthra/generator/resolver.rb +256 -0
- data/lib/synthra/generator/rng.rb +273 -0
- data/lib/synthra/generator/streamer.rb +63 -0
- data/lib/synthra/generator/uniqueness.rb +118 -0
- data/lib/synthra/initializer.rb +97 -0
- data/lib/synthra/limits.rb +279 -0
- data/lib/synthra/live_preview.rb +518 -0
- data/lib/synthra/loader_config.rb +78 -0
- data/lib/synthra/lsp/server.rb +689 -0
- data/lib/synthra/migration_generator.rb +301 -0
- data/lib/synthra/mixin.rb +174 -0
- data/lib/synthra/mock_server.rb +458 -0
- data/lib/synthra/native_engine.rb +304 -0
- data/lib/synthra/openapi_importer.rb +228 -0
- data/lib/synthra/output/json_formatter.rb +40 -0
- data/lib/synthra/output/ndjson_formatter.rb +55 -0
- data/lib/synthra/parser/ast.rb +1287 -0
- data/lib/synthra/parser/lexer.rb +1152 -0
- data/lib/synthra/parser/parser.rb +1664 -0
- data/lib/synthra/parser/tokens.rb +461 -0
- data/lib/synthra/performance_mode.rb +364 -0
- data/lib/synthra/personas.rb +397 -0
- data/lib/synthra/property_testing.rb +172 -0
- data/lib/synthra/quality_metrics.rb +405 -0
- data/lib/synthra/rails_test_helper.rb +248 -0
- data/lib/synthra/registry.rb +533 -0
- data/lib/synthra/relationships.rb +193 -0
- data/lib/synthra/repl/enhanced_repl.rb +607 -0
- data/lib/synthra/repl/formatter.rb +191 -0
- data/lib/synthra/scenarios.rb +423 -0
- data/lib/synthra/schema.rb +605 -0
- data/lib/synthra/schema_inheritance.rb +104 -0
- data/lib/synthra/schema_versioning.rb +212 -0
- data/lib/synthra/snapshot_testing.rb +199 -0
- data/lib/synthra/time_travel.rb +338 -0
- data/lib/synthra/type_definitions.rb +274 -0
- data/lib/synthra/types/address_location/addresses.rb +125 -0
- data/lib/synthra/types/address_location/airports.rb +200 -0
- data/lib/synthra/types/address_location/banks_hospitals.rb +207 -0
- data/lib/synthra/types/address_location/locations.rb +406 -0
- data/lib/synthra/types/base.rb +48 -0
- data/lib/synthra/types/commerce_products/commerce.rb +119 -0
- data/lib/synthra/types/commerce_products/companies.rb +71 -0
- data/lib/synthra/types/commerce_products/construction.rb +126 -0
- data/lib/synthra/types/commerce_products/products.rb +205 -0
- data/lib/synthra/types/core/collections.rb +513 -0
- data/lib/synthra/types/core/defaults.rb +76 -0
- data/lib/synthra/types/core/enums.rb +102 -0
- data/lib/synthra/types/core/identifiers.rb +445 -0
- data/lib/synthra/types/core/primitives.rb +586 -0
- data/lib/synthra/types/core/references.rb +466 -0
- data/lib/synthra/types/core/sequences.rb +304 -0
- data/lib/synthra/types/crypto/crypto.rb +162 -0
- data/lib/synthra/types/date_time/dates.rb +387 -0
- data/lib/synthra/types/finance_banking/banking.rb +424 -0
- data/lib/synthra/types/finance_banking/credit_cards.rb +24 -0
- data/lib/synthra/types/finance_banking/identifiers.rb +93 -0
- data/lib/synthra/types/formula.rb +184 -0
- data/lib/synthra/types/health_medical/medical.rb +150 -0
- data/lib/synthra/types/hostile_payloads.rb +122 -0
- data/lib/synthra/types/json_array.rb +51 -0
- data/lib/synthra/types/media_entertainment/media.rb +62 -0
- data/lib/synthra/types/naughty_string.rb +30 -0
- data/lib/synthra/types/personal_names/chinese.rb +41 -0
- data/lib/synthra/types/personal_names/identifiers.rb +187 -0
- data/lib/synthra/types/personal_names/names.rb +246 -0
- data/lib/synthra/types/personal_names/national_id.rb +89 -0
- data/lib/synthra/types/personal_names/titles_suffixes.rb +41 -0
- data/lib/synthra/types/regex.rb +248 -0
- data/lib/synthra/types/registry.rb +182 -0
- data/lib/synthra/types/repeating_element.rb +50 -0
- data/lib/synthra/types/scenario.rb +29 -0
- data/lib/synthra/types/technology_internet/apps.rb +67 -0
- data/lib/synthra/types/technology_internet/communication.rb +162 -0
- data/lib/synthra/types/technology_internet/devices.rb +80 -0
- data/lib/synthra/types/technology_internet/formats.rb +139 -0
- data/lib/synthra/types/technology_internet/networking.rb +143 -0
- data/lib/synthra/types/template.rb +92 -0
- data/lib/synthra/types/text_content/business.rb +128 -0
- data/lib/synthra/types/text_content/colors.rb +70 -0
- data/lib/synthra/types/text_content/misc.rb +237 -0
- data/lib/synthra/types/text_content/security.rb +130 -0
- data/lib/synthra/types/text_content/text_generation.rb +532 -0
- data/lib/synthra/types/travel/travel.rb +150 -0
- data/lib/synthra/utils/string_distance.rb +133 -0
- data/lib/synthra/validator/dsl_validator.rb +339 -0
- data/lib/synthra/validator/path_validator.rb +615 -0
- data/lib/synthra/version.rb +35 -0
- data/lib/synthra/webhook_simulator.rb +341 -0
- data/lib/synthra.rb +259 -0
- data/schemas/address.dsl +16 -0
- data/schemas/api_response.dsl +8 -0
- data/schemas/error_payload.dsl +9 -0
- data/schemas/order.dsl +10 -0
- data/schemas/order_item.dsl +8 -0
- data/schemas/payment.dsl +11 -0
- data/schemas/social_post.dsl +13 -0
- data/schemas/user.dsl +10 -0
- data/scripts/batch_fix_all.rb +96 -0
- data/scripts/delete_old_files.rb +32 -0
- data/scripts/fix_all_grouped_files.rb +137 -0
- data/scripts/fix_all_indentation.rb +48 -0
- data/scripts/fix_all_syntax.rb +124 -0
- data/scripts/fix_grouped_files.rb +184 -0
- data/scripts/fix_syntax_errors.rb +108 -0
- data/scripts/group_domain_types.rb +112 -0
- data/scripts/group_domain_types_fixed.rb +150 -0
- data/scripts/merge_domains_to_one_file.rb +68 -0
- data/scripts/move_existing_types.rb +130 -0
- data/scripts/split_grouped_types.rb +142 -0
- data/tech_docs/README.md +134 -0
- data/tech_docs/advanced/streaming.md +405 -0
- data/tech_docs/advanced/thread_safety.md +253 -0
- data/tech_docs/api/overview.md +485 -0
- data/tech_docs/appendices/type_chart.md +193 -0
- data/tech_docs/basic_concepts.md +383 -0
- data/tech_docs/behaviors/overview.md +346 -0
- data/tech_docs/dsl/complex_types.md +790 -0
- data/tech_docs/dsl/core_types.md +464 -0
- data/tech_docs/dsl/datetime_types.md +325 -0
- data/tech_docs/dsl/field_modifiers.md +414 -0
- data/tech_docs/dsl/grammar.md +431 -0
- data/tech_docs/dsl/schema_definition.md +399 -0
- data/tech_docs/export/README.md +276 -0
- data/tech_docs/installation.md +273 -0
- data/tech_docs/integration/ci_cd.md +707 -0
- data/tech_docs/integration/ci_cd_guide.md +579 -0
- data/tech_docs/integration/factory_bot.md +485 -0
- data/tech_docs/integration/rails.md +630 -0
- data/tech_docs/integration/rspec.md +449 -0
- data/tech_docs/modes/overview.md +350 -0
- data/tech_docs/performance/NATIVE_RUST_EXTENSION.md +1270 -0
- data/tech_docs/performance/OPTIMIZATION_GUIDE.md +901 -0
- data/tech_docs/quick_start.md +256 -0
- data/tech_docs/templates/README.md +805 -0
- data/tech_docs/tutorials/advanced.md +371 -0
- data/tech_docs/tutorials/getting_started.md +189 -0
- data/tech_docs/tutorials/intermediate.md +231 -0
- data/tech_docs/tutorials/template_gallery.md +569 -0
- data/tech_example/01_basic_usage.rb +238 -0
- data/tech_example/02_types_demo.rb +336 -0
- data/tech_example/04_cli_usage.md +429 -0
- data/tech_example/05_database_seeding.rb +283 -0
- data/tech_example/07_rspec_integration.rb +359 -0
- data/tech_example/10_custom_types.rb +387 -0
- data/tech_example/12_behaviors.rb +372 -0
- data/tech_example/13_twitter_dm_example.rb +120 -0
- data/tech_example/14_exact_json_structure.rb +253 -0
- data/tech_example/16_lsp_server.rb +56 -0
- data/tech_example/17_property_testing.rb +92 -0
- data/tech_example/18_enhanced_repl.rb +120 -0
- data/tech_example/19_security_fuzzing.rb +145 -0
- data/tech_example/NEW_FEATURES.md +169 -0
- data/tech_example/README.md +118 -0
- data/tech_example/schemas/api_response.dsl +123 -0
- data/tech_example/schemas/ecommerce.dsl +121 -0
- data/tech_example/schemas/twitter_dm.dsl +109 -0
- data/tech_example/schemas/user.dsl +36 -0
- data/vscode-extension/README.md +246 -0
- data/vscode-extension/language-configuration.json +31 -0
- data/vscode-extension/package.json +55 -0
- data/vscode-extension/snippets/fakedatadsl.json +198 -0
- data/vscode-extension/syntaxes/fakedatadsl.tmLanguage.json +128 -0
- metadata +478 -0
data/docs/index.html
ADDED
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>FakeDataDSL Documentation Index</title>
|
|
7
|
+
<style>
|
|
8
|
+
body {
|
|
9
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
10
|
+
line-height: 1.6;
|
|
11
|
+
max-width: 1200px;
|
|
12
|
+
margin: 0 auto;
|
|
13
|
+
padding: 20px;
|
|
14
|
+
background: #f5f5f5;
|
|
15
|
+
}
|
|
16
|
+
.container {
|
|
17
|
+
background: white;
|
|
18
|
+
padding: 40px;
|
|
19
|
+
border-radius: 8px;
|
|
20
|
+
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
|
21
|
+
}
|
|
22
|
+
h1 {
|
|
23
|
+
color: #2c3e50;
|
|
24
|
+
border-bottom: 3px solid #3498db;
|
|
25
|
+
padding-bottom: 10px;
|
|
26
|
+
}
|
|
27
|
+
h2 {
|
|
28
|
+
color: #34495e;
|
|
29
|
+
margin-top: 30px;
|
|
30
|
+
}
|
|
31
|
+
.doc-grid {
|
|
32
|
+
display: grid;
|
|
33
|
+
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
|
34
|
+
gap: 20px;
|
|
35
|
+
margin-top: 20px;
|
|
36
|
+
}
|
|
37
|
+
.doc-card {
|
|
38
|
+
border: 1px solid #ddd;
|
|
39
|
+
border-radius: 6px;
|
|
40
|
+
padding: 20px;
|
|
41
|
+
background: #fafafa;
|
|
42
|
+
transition: transform 0.2s, box-shadow 0.2s;
|
|
43
|
+
}
|
|
44
|
+
.doc-card:hover {
|
|
45
|
+
transform: translateY(-2px);
|
|
46
|
+
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
|
|
47
|
+
}
|
|
48
|
+
.doc-card h3 {
|
|
49
|
+
margin-top: 0;
|
|
50
|
+
color: #2c3e50;
|
|
51
|
+
}
|
|
52
|
+
.doc-card a {
|
|
53
|
+
color: #3498db;
|
|
54
|
+
text-decoration: none;
|
|
55
|
+
font-weight: bold;
|
|
56
|
+
}
|
|
57
|
+
.doc-card a:hover {
|
|
58
|
+
text-decoration: underline;
|
|
59
|
+
}
|
|
60
|
+
.doc-card p {
|
|
61
|
+
color: #666;
|
|
62
|
+
font-size: 0.9em;
|
|
63
|
+
}
|
|
64
|
+
.nav-links {
|
|
65
|
+
margin-top: 30px;
|
|
66
|
+
padding-top: 20px;
|
|
67
|
+
border-top: 1px solid #ddd;
|
|
68
|
+
}
|
|
69
|
+
.nav-links a {
|
|
70
|
+
color: #3498db;
|
|
71
|
+
text-decoration: none;
|
|
72
|
+
margin-right: 20px;
|
|
73
|
+
}
|
|
74
|
+
.nav-links a:hover {
|
|
75
|
+
text-decoration: underline;
|
|
76
|
+
}
|
|
77
|
+
</style>
|
|
78
|
+
</head>
|
|
79
|
+
<body>
|
|
80
|
+
<div class="container">
|
|
81
|
+
<h1>📚 FakeDataDSL Documentation</h1>
|
|
82
|
+
<p>Welcome to the FakeDataDSL documentation! This page provides quick access to all guides and references.</p>
|
|
83
|
+
|
|
84
|
+
<h2>🚀 Getting Started</h2>
|
|
85
|
+
<div class="doc-grid">
|
|
86
|
+
<div class="doc-card">
|
|
87
|
+
<h3><a href="../doc/file.getting_started.html">Getting Started</a></h3>
|
|
88
|
+
<p>Quick start guide for FakeDataDSL. Learn how to install, define schemas, and generate data.</p>
|
|
89
|
+
</div>
|
|
90
|
+
<div class="doc-card">
|
|
91
|
+
<h3><a href="../doc/file.USAGE_GUIDE.html">Usage Guide</a></h3>
|
|
92
|
+
<p>Complete guide on DSL syntax, types, formulas, unique constraints, and options with examples.</p>
|
|
93
|
+
</div>
|
|
94
|
+
<div class="doc-card">
|
|
95
|
+
<h3><a href="../doc/file.QUICK_REFERENCE.html">Quick Reference</a></h3>
|
|
96
|
+
<p>Quick reference card with common syntax and examples for quick lookup.</p>
|
|
97
|
+
</div>
|
|
98
|
+
</div>
|
|
99
|
+
|
|
100
|
+
<h2>📖 Reference Guides</h2>
|
|
101
|
+
<div class="doc-grid">
|
|
102
|
+
<div class="doc-card">
|
|
103
|
+
<h3><a href="../doc/file.dsl_reference.html">DSL Reference</a></h3>
|
|
104
|
+
<p>Complete reference for the FakeDataDSL syntax, including all field types and modifiers.</p>
|
|
105
|
+
</div>
|
|
106
|
+
<div class="doc-card">
|
|
107
|
+
<h3><a href="../doc/file.type_reference.html">Type Reference</a></h3>
|
|
108
|
+
<p>Comprehensive list of all available data types with examples and usage.</p>
|
|
109
|
+
</div>
|
|
110
|
+
<div class="doc-card">
|
|
111
|
+
<h3><a href="../doc/file.api_reference.html">API Reference</a></h3>
|
|
112
|
+
<p>Programmatic API documentation for using FakeDataDSL in Ruby code.</p>
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
115
|
+
|
|
116
|
+
<h2>🎯 Feature Guides</h2>
|
|
117
|
+
<div class="doc-grid">
|
|
118
|
+
<div class="doc-card">
|
|
119
|
+
<h3><a href="../doc/file.behaviors.html">Behaviors Guide</a></h3>
|
|
120
|
+
<p>Learn how to use behaviors like latency, failure simulation, and partial data.</p>
|
|
121
|
+
</div>
|
|
122
|
+
<div class="doc-card">
|
|
123
|
+
<h3><a href="../doc/file.generation_modes.html">Generation Modes</a></h3>
|
|
124
|
+
<p>Understand random, edge, invalid, and mixed generation modes for testing.</p>
|
|
125
|
+
</div>
|
|
126
|
+
<div class="doc-card">
|
|
127
|
+
<h3><a href="../doc/file.advanced_features.html">Advanced Features</a></h3>
|
|
128
|
+
<p>Cross-schema references, custom functions, streaming, and more advanced topics.</p>
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
131
|
+
|
|
132
|
+
<h2>💡 Examples & Best Practices</h2>
|
|
133
|
+
<div class="doc-grid">
|
|
134
|
+
<div class="doc-card">
|
|
135
|
+
<h3><a href="../doc/file.examples.html">Examples</a></h3>
|
|
136
|
+
<p>Real-world examples for e-commerce, social media, healthcare, and financial applications.</p>
|
|
137
|
+
</div>
|
|
138
|
+
<div class="doc-card">
|
|
139
|
+
<h3><a href="../doc/file.best_practices.html">Best Practices</a></h3>
|
|
140
|
+
<p>Tips and recommendations for using FakeDataDSL effectively.</p>
|
|
141
|
+
</div>
|
|
142
|
+
<div class="doc-card">
|
|
143
|
+
<h3><a href="../doc/file.troubleshooting.html">Troubleshooting</a></h3>
|
|
144
|
+
<p>Common issues and solutions when using FakeDataDSL.</p>
|
|
145
|
+
</div>
|
|
146
|
+
</div>
|
|
147
|
+
|
|
148
|
+
<h2>🔧 Additional Resources</h2>
|
|
149
|
+
<div class="doc-grid">
|
|
150
|
+
<div class="doc-card">
|
|
151
|
+
<h3><a href="../doc/file.HOW_TO_GENERATE_DOCS.html">How to Generate Docs</a></h3>
|
|
152
|
+
<p>Guide on generating and accessing YARD documentation.</p>
|
|
153
|
+
</div>
|
|
154
|
+
<div class="doc-card">
|
|
155
|
+
<h3><a href="../doc/index.html">YARD API Documentation</a></h3>
|
|
156
|
+
<p>Complete API reference generated from code comments.</p>
|
|
157
|
+
</div>
|
|
158
|
+
<div class="doc-card">
|
|
159
|
+
<h3><a href="../doc/file_list.html">All Files</a></h3>
|
|
160
|
+
<p>Complete list of all documentation files.</p>
|
|
161
|
+
</div>
|
|
162
|
+
</div>
|
|
163
|
+
|
|
164
|
+
<div class="nav-links">
|
|
165
|
+
<h2>🔗 Quick Links</h2>
|
|
166
|
+
<p>
|
|
167
|
+
<a href="../doc/index.html">YARD Index</a>
|
|
168
|
+
<a href="../doc/class_list.html">All Classes</a>
|
|
169
|
+
<a href="../doc/method_list.html">All Methods</a>
|
|
170
|
+
<a href="../doc/file_list.html">All Files</a>
|
|
171
|
+
<a href="../README.md">Project README</a>
|
|
172
|
+
</p>
|
|
173
|
+
</div>
|
|
174
|
+
</div>
|
|
175
|
+
</body>
|
|
176
|
+
</html>
|
|
177
|
+
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
# Cloud Schema Registry Architecture
|
|
2
|
+
# =============================================================================
|
|
3
|
+
#
|
|
4
|
+
# Strategic architecture for a Central Schema Registry Service to enable
|
|
5
|
+
# schema sharing across teams and organizations at scale (50+ engineers).
|
|
6
|
+
#
|
|
7
|
+
# Status: Architecture Planning Phase
|
|
8
|
+
# Target: Future v2.0+ feature
|
|
9
|
+
#
|
|
10
|
+
# =============================================================================
|
|
11
|
+
|
|
12
|
+
## Problem Statement
|
|
13
|
+
|
|
14
|
+
As FakeDataDSL adoption scales to 50+ engineers:
|
|
15
|
+
- Git-based schema sharing becomes cumbersome
|
|
16
|
+
- Schema versioning conflicts increase
|
|
17
|
+
- Cross-team schema discovery is difficult
|
|
18
|
+
- Contract testing requires manual coordination
|
|
19
|
+
|
|
20
|
+
## Solution: Central Schema Registry
|
|
21
|
+
|
|
22
|
+
A centralized service for publishing, versioning, and discovering schemas
|
|
23
|
+
across teams and organizations.
|
|
24
|
+
|
|
25
|
+
## Architecture Overview
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
29
|
+
│ Schema Registry Service │
|
|
30
|
+
│ (REST API + gRPC + WebSocket for real-time updates) │
|
|
31
|
+
├─────────────────────────────────────────────────────────────┤
|
|
32
|
+
│ Features: │
|
|
33
|
+
│ - Schema publishing (User v1.0, Order v2.3) │
|
|
34
|
+
│ - Version management (semantic versioning) │
|
|
35
|
+
│ - Schema discovery (search, browse, tags) │
|
|
36
|
+
│ - Contract testing (Frontend ↔ Backend validation) │
|
|
37
|
+
│ - Access control (team-based permissions) │
|
|
38
|
+
└─────────────────────────────────────────────────────────────┘
|
|
39
|
+
│
|
|
40
|
+
│ HTTP/gRPC
|
|
41
|
+
│
|
|
42
|
+
┌─────────────────────┴─────────────────────┐
|
|
43
|
+
│ │
|
|
44
|
+
┌───────▼────────┐ ┌────────▼───────┐
|
|
45
|
+
│ Backend Team │ │ Frontend Team │
|
|
46
|
+
│ Publishes: │ │ Consumes: │
|
|
47
|
+
│ User v1.0 │ │ User v1.0 │
|
|
48
|
+
│ Order v2.3 │ │ (for mocks) │
|
|
49
|
+
└────────────────┘ └────────────────┘
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Core Features
|
|
53
|
+
|
|
54
|
+
### 1. Schema Publishing
|
|
55
|
+
|
|
56
|
+
```ruby
|
|
57
|
+
# Backend team publishes schema
|
|
58
|
+
FakeDataDSL::Registry::Cloud.publish(
|
|
59
|
+
schema: user_schema,
|
|
60
|
+
version: "1.0.0",
|
|
61
|
+
team: "backend",
|
|
62
|
+
tags: ["user", "authentication"],
|
|
63
|
+
description: "User authentication schema"
|
|
64
|
+
)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### 2. Schema Discovery
|
|
68
|
+
|
|
69
|
+
```ruby
|
|
70
|
+
# Frontend team discovers schemas
|
|
71
|
+
schemas = FakeDataDSL::Registry::Cloud.search(
|
|
72
|
+
tags: ["user"],
|
|
73
|
+
team: "backend",
|
|
74
|
+
version: ">=1.0.0"
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
# Load schema for mocking
|
|
78
|
+
user_schema = FakeDataDSL::Registry::Cloud.fetch("User", version: "1.0.0")
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### 3. Ref() with Remote Lookup
|
|
82
|
+
|
|
83
|
+
```ruby
|
|
84
|
+
# Ref() automatically resolves from registry if not found locally
|
|
85
|
+
# user.dsl
|
|
86
|
+
Order:
|
|
87
|
+
user_id: Ref(User.id) # Looks up User schema from registry if not local
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### 4. Contract Testing
|
|
91
|
+
|
|
92
|
+
```ruby
|
|
93
|
+
# Frontend generates mocks using exact backend schema
|
|
94
|
+
backend_schema = FakeDataDSL::Registry::Cloud.fetch("User", team: "backend", version: "1.0.0")
|
|
95
|
+
mock_data = backend_schema.generate_many(100)
|
|
96
|
+
|
|
97
|
+
# Validate frontend handles backend schema correctly
|
|
98
|
+
expect(frontend_component).to_handle_schema(backend_schema)
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## API Design
|
|
102
|
+
|
|
103
|
+
### REST API
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
POST /api/v1/schemas # Publish schema
|
|
107
|
+
GET /api/v1/schemas/:name # Get schema
|
|
108
|
+
GET /api/v1/schemas/:name/versions # List versions
|
|
109
|
+
GET /api/v1/schemas?team=backend # Search schemas
|
|
110
|
+
PUT /api/v1/schemas/:name/:version # Update schema
|
|
111
|
+
DELETE /api/v1/schemas/:name/:version # Deprecate schema
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### gRPC API (for high-performance clients)
|
|
115
|
+
|
|
116
|
+
```protobuf
|
|
117
|
+
service SchemaRegistry {
|
|
118
|
+
rpc PublishSchema(PublishRequest) returns (PublishResponse);
|
|
119
|
+
rpc GetSchema(GetSchemaRequest) returns (Schema);
|
|
120
|
+
rpc SearchSchemas(SearchRequest) returns (SearchResponse);
|
|
121
|
+
rpc WatchSchema(WatchRequest) returns (stream SchemaUpdate);
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Implementation Phases
|
|
126
|
+
|
|
127
|
+
### Phase 1: Local Registry Cache (MVP)
|
|
128
|
+
|
|
129
|
+
- Client-side caching of fetched schemas
|
|
130
|
+
- HTTP client for schema fetching
|
|
131
|
+
- Fallback to local schemas if registry unavailable
|
|
132
|
+
|
|
133
|
+
```ruby
|
|
134
|
+
# lib/fake_data_dsl/registry/cloud.rb
|
|
135
|
+
module FakeDataDSL
|
|
136
|
+
module Registry
|
|
137
|
+
class Cloud
|
|
138
|
+
def self.fetch(name, version: nil, team: nil)
|
|
139
|
+
# Try cache first
|
|
140
|
+
# Then HTTP fetch
|
|
141
|
+
# Fallback to local registry
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Phase 2: Full Registry Service
|
|
149
|
+
|
|
150
|
+
- REST API server (Ruby/Rails or Go)
|
|
151
|
+
- Schema storage (PostgreSQL with JSONB)
|
|
152
|
+
- Version management
|
|
153
|
+
- Search and discovery
|
|
154
|
+
- Authentication/authorization
|
|
155
|
+
|
|
156
|
+
### Phase 3: Advanced Features
|
|
157
|
+
|
|
158
|
+
- Real-time schema updates (WebSocket)
|
|
159
|
+
- Schema diff visualization
|
|
160
|
+
- Contract testing framework
|
|
161
|
+
- Schema analytics (usage, versions, teams)
|
|
162
|
+
|
|
163
|
+
## Data Model
|
|
164
|
+
|
|
165
|
+
```sql
|
|
166
|
+
CREATE TABLE schemas (
|
|
167
|
+
id UUID PRIMARY KEY,
|
|
168
|
+
name VARCHAR(255) NOT NULL,
|
|
169
|
+
version VARCHAR(50) NOT NULL,
|
|
170
|
+
team VARCHAR(100) NOT NULL,
|
|
171
|
+
dsl_content TEXT NOT NULL,
|
|
172
|
+
compiled_json JSONB NOT NULL,
|
|
173
|
+
tags TEXT[],
|
|
174
|
+
description TEXT,
|
|
175
|
+
published_at TIMESTAMP NOT NULL,
|
|
176
|
+
deprecated_at TIMESTAMP,
|
|
177
|
+
UNIQUE(name, version, team)
|
|
178
|
+
);
|
|
179
|
+
|
|
180
|
+
CREATE INDEX idx_schemas_name ON schemas(name);
|
|
181
|
+
CREATE INDEX idx_schemas_team ON schemas(team);
|
|
182
|
+
CREATE INDEX idx_schemas_tags ON schemas USING GIN(tags);
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## Client Integration
|
|
186
|
+
|
|
187
|
+
### Configuration
|
|
188
|
+
|
|
189
|
+
```ruby
|
|
190
|
+
FakeDataDSL.configure do |config|
|
|
191
|
+
config.registry_url = "https://registry.company.com"
|
|
192
|
+
config.registry_token = ENV["REGISTRY_TOKEN"]
|
|
193
|
+
config.registry_team = "backend"
|
|
194
|
+
config.registry_cache_ttl = 3600 # 1 hour
|
|
195
|
+
end
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Automatic Resolution
|
|
199
|
+
|
|
200
|
+
```ruby
|
|
201
|
+
# Ref() automatically resolves from registry
|
|
202
|
+
registry = FakeDataDSL::Registry.new
|
|
203
|
+
registry.load_file("user.dsl") # Local schema
|
|
204
|
+
|
|
205
|
+
# Order.dsl references User - automatically fetched from registry
|
|
206
|
+
registry.load_file("order.dsl") # Ref(User.id) resolves from registry
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## Security & Access Control
|
|
210
|
+
|
|
211
|
+
- **Authentication**: API tokens per team
|
|
212
|
+
- **Authorization**: Team-based access control
|
|
213
|
+
- **Schema Privacy**: Private schemas (team-only) vs public schemas
|
|
214
|
+
- **Rate Limiting**: Prevent abuse
|
|
215
|
+
|
|
216
|
+
## Deployment Options
|
|
217
|
+
|
|
218
|
+
### Option 1: SaaS (Hosted Service)
|
|
219
|
+
|
|
220
|
+
- FakeDataDSL team hosts registry
|
|
221
|
+
- Free tier + paid tiers
|
|
222
|
+
- Multi-tenant architecture
|
|
223
|
+
|
|
224
|
+
### Option 2: Self-Hosted
|
|
225
|
+
|
|
226
|
+
- Docker container
|
|
227
|
+
- Kubernetes deployment
|
|
228
|
+
- On-premises installation
|
|
229
|
+
|
|
230
|
+
### Option 3: Hybrid
|
|
231
|
+
|
|
232
|
+
- Local registry for internal schemas
|
|
233
|
+
- Cloud registry for public/shared schemas
|
|
234
|
+
|
|
235
|
+
## Success Metrics
|
|
236
|
+
|
|
237
|
+
- **Adoption**: 50+ engineers using registry
|
|
238
|
+
- **Performance**: <100ms schema fetch latency
|
|
239
|
+
- **Reliability**: 99.9% uptime
|
|
240
|
+
- **Usage**: 1000+ schema versions published
|
|
241
|
+
|
|
242
|
+
## Migration Path
|
|
243
|
+
|
|
244
|
+
1. **Phase 1**: Add client library (backward compatible)
|
|
245
|
+
2. **Phase 2**: Deploy registry service (optional)
|
|
246
|
+
3. **Phase 3**: Teams migrate schemas to registry
|
|
247
|
+
4. **Phase 4**: Registry becomes primary source
|
|
248
|
+
|
|
249
|
+
## Open Questions
|
|
250
|
+
|
|
251
|
+
1. **Schema Format**: Store DSL or compiled JSON?
|
|
252
|
+
- **Recommendation**: Both (DSL for human editing, JSON for fast loading)
|
|
253
|
+
|
|
254
|
+
2. **Versioning Strategy**: Semantic versioning or timestamp-based?
|
|
255
|
+
- **Recommendation**: Semantic versioning (1.0.0, 1.1.0, 2.0.0)
|
|
256
|
+
|
|
257
|
+
3. **Conflict Resolution**: What if two teams publish same schema name?
|
|
258
|
+
- **Recommendation**: Namespace by team (backend/User vs frontend/User)
|
|
259
|
+
|
|
260
|
+
4. **Backward Compatibility**: How to handle breaking changes?
|
|
261
|
+
- **Recommendation**: Major version bumps (1.0.0 → 2.0.0) + deprecation warnings
|
|
262
|
+
|
|
263
|
+
## References
|
|
264
|
+
|
|
265
|
+
- JSON Schema Registry patterns
|
|
266
|
+
- Docker Registry architecture
|
|
267
|
+
- NPM registry design
|
|
268
|
+
- Maven Central Repository
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# SIMD-Accelerated Generation Strategy
|
|
2
|
+
# =============================================================================
|
|
3
|
+
#
|
|
4
|
+
# Strategic plan for SIMD (Single Instruction, Multiple Data) optimizations
|
|
5
|
+
# in the Rust native engine to achieve 20-30% additional performance for
|
|
6
|
+
# massive datasets (100M+ records).
|
|
7
|
+
#
|
|
8
|
+
# Status: Strategic Planning Phase
|
|
9
|
+
# Target: Rust native engine (ext/fake_data_dsl_native/)
|
|
10
|
+
#
|
|
11
|
+
# =============================================================================
|
|
12
|
+
|
|
13
|
+
## Overview
|
|
14
|
+
|
|
15
|
+
SIMD instructions allow processing multiple data elements in parallel using
|
|
16
|
+
specialized CPU instructions. For FakeDataDSL, SIMD can accelerate:
|
|
17
|
+
|
|
18
|
+
1. **UUID Generation** - Generate 4 UUIDs per SIMD operation (AVX-512)
|
|
19
|
+
2. **Number Formatting** - Parallel integer-to-string conversion
|
|
20
|
+
3. **JSON Serialization** - Vectorized string escaping and formatting
|
|
21
|
+
4. **String Operations** - Parallel character manipulation
|
|
22
|
+
|
|
23
|
+
## Target Hot Paths
|
|
24
|
+
|
|
25
|
+
### 1. UUID Generation (Highest Impact)
|
|
26
|
+
|
|
27
|
+
**Current**: Sequential UUID generation using `uuid` crate
|
|
28
|
+
**SIMD Opportunity**: Generate 4-8 UUIDs per operation using AVX-512
|
|
29
|
+
|
|
30
|
+
```rust
|
|
31
|
+
// Pseudo-code for SIMD UUID generation
|
|
32
|
+
#[target_feature(enable = "avx512f")]
|
|
33
|
+
unsafe fn generate_uuid_batch_simd(count: usize) -> Vec<Uuid> {
|
|
34
|
+
// Generate 4 UUIDs per SIMD operation
|
|
35
|
+
// Use AVX-512 for 512-bit operations
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Expected Speedup**: 3-4x for UUID-heavy schemas
|
|
40
|
+
|
|
41
|
+
### 2. Number Formatting
|
|
42
|
+
|
|
43
|
+
**Current**: Sequential integer-to-string conversion
|
|
44
|
+
**SIMD Opportunity**: Format multiple integers in parallel
|
|
45
|
+
|
|
46
|
+
```rust
|
|
47
|
+
// Use SIMD for parallel number formatting
|
|
48
|
+
// Process 8-16 integers per operation
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**Expected Speedup**: 2-3x for number-heavy schemas
|
|
52
|
+
|
|
53
|
+
### 3. JSON Serialization
|
|
54
|
+
|
|
55
|
+
**Current**: Sequential character-by-character escaping
|
|
56
|
+
**SIMD Opportunity**: Vectorized string escaping
|
|
57
|
+
|
|
58
|
+
```rust
|
|
59
|
+
// Use SIMD to escape multiple characters in parallel
|
|
60
|
+
// Detect special characters (", \, \n, etc.) in batches
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Expected Speedup**: 1.5-2x for JSON output
|
|
64
|
+
|
|
65
|
+
## Implementation Strategy
|
|
66
|
+
|
|
67
|
+
### Phase 1: UUID SIMD (Highest ROI)
|
|
68
|
+
|
|
69
|
+
1. **Research**: Evaluate `simd-uuid` crate or implement custom AVX-512 UUID generation
|
|
70
|
+
2. **Benchmark**: Measure current UUID generation throughput
|
|
71
|
+
3. **Implement**: Add SIMD UUID generation path
|
|
72
|
+
4. **Validate**: Ensure deterministic output with seeds
|
|
73
|
+
5. **Deploy**: Feature flag for SIMD UUID generation
|
|
74
|
+
|
|
75
|
+
### Phase 2: Number Formatting SIMD
|
|
76
|
+
|
|
77
|
+
1. **Research**: Evaluate `itoa` SIMD optimizations or custom implementation
|
|
78
|
+
2. **Implement**: Parallel integer formatting
|
|
79
|
+
3. **Benchmark**: Compare against current implementation
|
|
80
|
+
|
|
81
|
+
### Phase 3: JSON Serialization SIMD
|
|
82
|
+
|
|
83
|
+
1. **Research**: Evaluate `simd-json` or custom SIMD escaping
|
|
84
|
+
2. **Implement**: Vectorized string escaping
|
|
85
|
+
3. **Benchmark**: Measure JSON serialization throughput
|
|
86
|
+
|
|
87
|
+
## Technical Considerations
|
|
88
|
+
|
|
89
|
+
### CPU Feature Detection
|
|
90
|
+
|
|
91
|
+
```rust
|
|
92
|
+
// Runtime CPU feature detection
|
|
93
|
+
if is_x86_feature_detected!("avx512f") {
|
|
94
|
+
use_simd_path()
|
|
95
|
+
} else if is_x86_feature_detected!("avx2") {
|
|
96
|
+
use_avx2_path()
|
|
97
|
+
} else {
|
|
98
|
+
use_scalar_path()
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Fallback Strategy
|
|
103
|
+
|
|
104
|
+
- Always provide scalar fallback for CPUs without SIMD support
|
|
105
|
+
- Use runtime feature detection, not compile-time
|
|
106
|
+
- Gracefully degrade on older CPUs
|
|
107
|
+
|
|
108
|
+
### Determinism
|
|
109
|
+
|
|
110
|
+
- SIMD operations must maintain deterministic output with seeds
|
|
111
|
+
- Ensure same seed produces same output regardless of SIMD path
|
|
112
|
+
- Test determinism across different CPU architectures
|
|
113
|
+
|
|
114
|
+
## Performance Targets
|
|
115
|
+
|
|
116
|
+
| Operation | Current | SIMD Target | Speedup |
|
|
117
|
+
|-----------|---------|-------------|---------|
|
|
118
|
+
| UUID generation | ~500K/sec | ~2M/sec | 4x |
|
|
119
|
+
| Number formatting | ~1M/sec | ~2.5M/sec | 2.5x |
|
|
120
|
+
| JSON serialization | ~300K/sec | ~500K/sec | 1.7x |
|
|
121
|
+
| Overall (mixed) | ~3.5M/sec | ~4.5M/sec | 1.3x |
|
|
122
|
+
|
|
123
|
+
## Implementation Timeline
|
|
124
|
+
|
|
125
|
+
- **Q1**: Research and prototype UUID SIMD
|
|
126
|
+
- **Q2**: Implement and benchmark UUID SIMD
|
|
127
|
+
- **Q3**: Add number formatting SIMD
|
|
128
|
+
- **Q4**: Add JSON serialization SIMD
|
|
129
|
+
|
|
130
|
+
## Risks & Mitigation
|
|
131
|
+
|
|
132
|
+
1. **CPU Compatibility**: Not all CPUs support AVX-512
|
|
133
|
+
- **Mitigation**: Runtime detection with fallback
|
|
134
|
+
|
|
135
|
+
2. **Complexity**: SIMD code is harder to maintain
|
|
136
|
+
- **Mitigation**: Extensive tests, clear documentation
|
|
137
|
+
|
|
138
|
+
3. **Determinism**: SIMD operations must be deterministic
|
|
139
|
+
- **Mitigation**: Careful seed handling, comprehensive tests
|
|
140
|
+
|
|
141
|
+
## Success Metrics
|
|
142
|
+
|
|
143
|
+
- 20-30% overall performance improvement for 100M+ record generation
|
|
144
|
+
- No regression on CPUs without SIMD support
|
|
145
|
+
- Maintain 100% deterministic output with seeds
|
|
146
|
+
- Zero increase in memory usage
|
|
147
|
+
|
|
148
|
+
## References
|
|
149
|
+
|
|
150
|
+
- Intel AVX-512 Programming Reference
|
|
151
|
+
- Rust SIMD Working Group: https://github.com/rust-lang/stdsimd
|
|
152
|
+
- `simd-json` crate for JSON optimization patterns
|
|
153
|
+
- `simd-uuid` research papers
|