rust: Major additions.
authorBen Pfaff <blp@cs.stanford.edu>
Fri, 18 Jul 2025 16:10:56 +0000 (09:10 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Sun, 24 Aug 2025 18:16:29 +0000 (11:16 -0700)
commit20626a75474660269ca7facf4305946c87b556a2
tree7cd233105793b0ac9526cea5b1064214fdca3f0c
parent885e947e79c6177b332fd9a2473fe8b1a2e9fd59
rust: Major additions.

This adds support for writing system files to the Rust pspp library and
to the `convert` command in the Rust CLI.  It also renames the `dissect`
command in the CLI to `show` and adds numerous features to it.

This makes many bug fixes across the Rust pspp library and changes the
library internals in several ways.
138 files changed:
rust/Cargo.lock
rust/pspp-lsp/Cargo.toml
rust/pspp/Cargo.toml
rust/pspp/build.rs
rust/pspp/src/crypto/mod.rs
rust/pspp/src/data.rs
rust/pspp/src/data/encoded.rs [new file with mode: 0644]
rust/pspp/src/dictionary.rs
rust/pspp/src/endian.rs
rust/pspp/src/format/display/mod.rs
rust/pspp/src/format/display/test.rs
rust/pspp/src/format/mod.rs
rust/pspp/src/format/parse.rs
rust/pspp/src/identifier.rs
rust/pspp/src/lex/mod.rs
rust/pspp/src/lib.rs
rust/pspp/src/main.rs
rust/pspp/src/message.rs
rust/pspp/src/output/cairo/driver.rs
rust/pspp/src/output/cairo/mod.rs
rust/pspp/src/output/csv.rs
rust/pspp/src/output/driver.rs
rust/pspp/src/output/html.rs
rust/pspp/src/output/json.rs [new file with mode: 0644]
rust/pspp/src/output/mod.rs
rust/pspp/src/output/page.rs
rust/pspp/src/output/pivot/mod.rs
rust/pspp/src/output/pivot/test.rs
rust/pspp/src/output/spv.rs
rust/pspp/src/output/text.rs
rust/pspp/src/settings.rs
rust/pspp/src/sys/cooked.rs
rust/pspp/src/sys/encoding.rs
rust/pspp/src/sys/mod.rs
rust/pspp/src/sys/raw.rs
rust/pspp/src/sys/raw/records.rs
rust/pspp/src/sys/sack.rs
rust/pspp/src/sys/test.rs
rust/pspp/src/sys/testdata/attributes.expected
rust/pspp/src/sys/testdata/bad_machine_float_info_size.expected
rust/pspp/src/sys/testdata/bad_machine_integer_info_count.expected
rust/pspp/src/sys/testdata/bad_machine_integer_info_endianness.expected
rust/pspp/src/sys/testdata/bad_machine_integer_info_float_format.expected
rust/pspp/src/sys/testdata/bad_variable_name_in_long_string_value_label.expected
rust/pspp/src/sys/testdata/bad_variable_name_in_variable_value_pair.expected
rust/pspp/src/sys/testdata/bad_very_long_string_length.expected
rust/pspp/src/sys/testdata/bad_very_long_string_segment_width.expected
rust/pspp/src/sys/testdata/compressed_data.expected
rust/pspp/src/sys/testdata/compressed_data_other_bias.expected
rust/pspp/src/sys/testdata/compressed_data_zero_bias.expected
rust/pspp/src/sys/testdata/documents.expected
rust/pspp/src/sys/testdata/duplicate_attribute_name.expected
rust/pspp/src/sys/testdata/duplicate_long_variable_name.expected
rust/pspp/src/sys/testdata/duplicate_value_labels_type.expected
rust/pspp/src/sys/testdata/duplicate_variable_name.expected
rust/pspp/src/sys/testdata/empty_document_record.expected
rust/pspp/src/sys/testdata/extra_product_info.expected
rust/pspp/src/sys/testdata/fewer_data_records_than_indicated_by_file_header.expected
rust/pspp/src/sys/testdata/integer_overflows_in_long_string_missing_values.expected
rust/pspp/src/sys/testdata/invalid_long_string_missing_values.expected
rust/pspp/src/sys/testdata/invalid_variable_format.expected
rust/pspp/src/sys/testdata/invalid_variable_name.expected
rust/pspp/src/sys/testdata/long_variable_names.expected
rust/pspp/src/sys/testdata/missing_attribute_value.expected
rust/pspp/src/sys/testdata/missing_newline_after_variable_name_in_mrsets.expected
rust/pspp/src/sys/testdata/missing_string_continuation.expected
rust/pspp/src/sys/testdata/mixed_variable_types_in_mrsets.expected
rust/pspp/src/sys/testdata/more_data_records_than_indicated_by_file_header.expected
rust/pspp/src/sys/testdata/multiple_documents_records.expected
rust/pspp/src/sys/testdata/multiple_response_sets.expected
rust/pspp/src/sys/testdata/multiple_response_sets_bad_counted_string.expected
rust/pspp/src/sys/testdata/multiple_response_sets_bad_name.expected
rust/pspp/src/sys/testdata/multiple_response_sets_counted_string_bad_length.expected
rust/pspp/src/sys/testdata/multiple_response_sets_counted_string_missing_space.expected
rust/pspp/src/sys/testdata/multiple_response_sets_duplicate_variable_name.expected
rust/pspp/src/sys/testdata/multiple_response_sets_missing_label_source.expected
rust/pspp/src/sys/testdata/multiple_response_sets_missing_newline_after_variable_name.expected
rust/pspp/src/sys/testdata/multiple_response_sets_missing_space_after_c.expected
rust/pspp/src/sys/testdata/multiple_response_sets_missing_space_after_counted_string.expected
rust/pspp/src/sys/testdata/multiple_response_sets_missing_space_after_e.expected
rust/pspp/src/sys/testdata/multiple_response_sets_unexpected_label_source.expected
rust/pspp/src/sys/testdata/no_variables.expected
rust/pspp/src/sys/testdata/null_dereference_skipping_bad_extension_record_18.expected
rust/pspp/src/sys/testdata/partial_compressed_data_record.expected
rust/pspp/src/sys/testdata/partial_data_record_between_variables.expected
rust/pspp/src/sys/testdata/partial_data_record_within_long_string.expected
rust/pspp/src/sys/testdata/test-encrypted.expected
rust/pspp/src/sys/testdata/type_4_record_names_long_string_variable.expected
rust/pspp/src/sys/testdata/unknown_encoding.expected
rust/pspp/src/sys/testdata/unknown_extension_record.expected
rust/pspp/src/sys/testdata/unquoted_attribute_value.expected
rust/pspp/src/sys/testdata/unspecified_number_of_variable_positions.expected
rust/pspp/src/sys/testdata/value_label_variable_indexes_must_be_in_correct_range.expected
rust/pspp/src/sys/testdata/value_label_variable_indexes_must_not_be_long_string_continuation.expected
rust/pspp/src/sys/testdata/value_label_with_no_associated_variables.expected
rust/pspp/src/sys/testdata/value_labels.expected
rust/pspp/src/sys/testdata/variable_display_with_width.expected
rust/pspp/src/sys/testdata/variable_display_without_width.expected
rust/pspp/src/sys/testdata/variable_labels_and_missing_values.expected
rust/pspp/src/sys/testdata/variable_roles.expected
rust/pspp/src/sys/testdata/variable_sets.expected
rust/pspp/src/sys/testdata/variable_sets_unknown_variable.expected
rust/pspp/src/sys/testdata/variables_for_value_label_must_all_be_same_type.expected
rust/pspp/src/sys/testdata/very_long_strings.expected
rust/pspp/src/sys/testdata/weight_must_be_numeric.expected
rust/pspp/src/sys/testdata/weight_variable_bad_index.expected
rust/pspp/src/sys/testdata/weight_variable_continuation.expected
rust/pspp/src/sys/testdata/write-numeric-simple.expected [new file with mode: 0644]
rust/pspp/src/sys/testdata/write-numeric-uncompressed.expected [new file with mode: 0644]
rust/pspp/src/sys/testdata/write-numeric-zlib.expected [new file with mode: 0644]
rust/pspp/src/sys/testdata/write-string-simple.expected [new file with mode: 0644]
rust/pspp/src/sys/testdata/write-string-uncompressed.expected [new file with mode: 0644]
rust/pspp/src/sys/testdata/write-string-zlib.expected [new file with mode: 0644]
rust/pspp/src/sys/testdata/wrong_display_alignment.expected
rust/pspp/src/sys/testdata/wrong_display_measurement_level.expected
rust/pspp/src/sys/testdata/wrong_display_parameter_count.expected
rust/pspp/src/sys/testdata/wrong_display_parameter_size.expected
rust/pspp/src/sys/testdata/wrong_special_floats.expected
rust/pspp/src/sys/testdata/wrong_variable_positions.expected
rust/pspp/src/sys/testdata/wrong_variable_positions_but_v13.expected
rust/pspp/src/sys/testdata/zcompressed_data.expected
rust/pspp/src/sys/testdata/zcompressed_data_bad_zheader_ofs.expected
rust/pspp/src/sys/testdata/zcompressed_data_bad_ztrailer_ofs.expected
rust/pspp/src/sys/testdata/zcompressed_data_compressed_sizes_don_t_add_up.expected
rust/pspp/src/sys/testdata/zcompressed_data_compressed_sizes_dont_add_up.expected
rust/pspp/src/sys/testdata/zcompressed_data_compression_expands_data_too_much.expected
rust/pspp/src/sys/testdata/zcompressed_data_invalid_ztrailer_len.expected
rust/pspp/src/sys/testdata/zcompressed_data_uncompressed_size_block_size.expected
rust/pspp/src/sys/testdata/zcompressed_data_wrong_block_size.expected
rust/pspp/src/sys/testdata/zcompressed_data_wrong_compressed_ofs.expected
rust/pspp/src/sys/testdata/zcompressed_data_wrong_n_blocks.expected
rust/pspp/src/sys/testdata/zcompressed_data_wrong_uncompressed_ofs.expected
rust/pspp/src/sys/testdata/zcompressed_data_wrong_ztrailer_bias.expected
rust/pspp/src/sys/testdata/zcompressed_data_wrong_ztrailer_len.expected
rust/pspp/src/sys/testdata/zcompressed_data_wrong_ztrailer_zero.expected
rust/pspp/src/sys/testdata/zero_or_one_variable_in_mrset.expected
rust/pspp/src/sys/write.rs [new file with mode: 0644]
rust/pspp/src/variable.rs [new file with mode: 0644]