Ben Pfaff [Tue, 2 Sep 2025 22:37:42 +0000 (15:37 -0700)]
rust: Move all command documentation into a single directory.
This makes it much easier to find the documentation for a command, or to
reference a command's documentation, because it's not necessary to guess
which chapter it is documented in.
Ben Pfaff [Sun, 24 Aug 2025 22:16:19 +0000 (15:16 -0700)]
rust: Switch to `hashbrown` for value labels to allow more flexible lookup.
The `Equivalent` trait allows us to look up keys that cannot directly
`Borrow` the values in the hash table, which increases the flexibility
and makes value label lookup much easier.
Ben Pfaff [Fri, 18 Jul 2025 16:10:56 +0000 (09:10 -0700)]
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.
Ben Pfaff [Sat, 12 Jul 2025 00:05:30 +0000 (17:05 -0700)]
rust: Clean up and improve system file handling; add "pspp decrypt".
This commit substantially improves the system file reader and refactors
and documents it. It adds the "pspp decrypt" command to the command-line
interface and removes the standalone "sack" example program (which was not
really useful).
Ben Pfaff [Sun, 19 Mar 2023 00:50:19 +0000 (17:50 -0700)]
Initial work on Rust implementation of PSPP.
To run what's here, use `cargo run` inside the `rust` directory to run
it in place, or `cargo install` to install it to a local directory. The
`convert` command is the only thing that really works so far.
I changed the way the bundle is build to allow codesigning.
The binary is moved to Content/MacOS and therefore the location
of the resources like icons is changed with respect to the
binary location.
Ben Pfaff [Tue, 28 Jan 2025 22:22:51 +0000 (14:22 -0800)]
QUICK CLUSTER: Use fixed format for cluster centers.
This command used the variables' own formats for their centers. This was
a bad idea for at least two reasons. First, the variables might have a
format that does not show any decimal places, but clusters wouldn't
ordinarily have integer centers, so this is confusing. Second, if a
cluster center happens to have a value label, it could be shown instead,
which is even more confusing. This fixes the problem by using a fixed
format instead.
Thanks to Andreas Hammer for reporting the problem.
message: check if location is present before accessing it
The message location is accessed without checking if the
location is actually present. I added a check if the message
location is there. Thanks to Simon Jacobs for reporting the
bug!
import assistant: fix variable width after guesser with output constraints
The current code fixes the guessed variable width according to
input constraints. But the data output stages checks the
width against output constraints. The minimum width for FMT_E
is 1 for input and 6 for output. When the guesser proposes FMT_E
with width 5, then 5 is chosen. With this patch, the width is
fixed to 6.
Thanks to Fatemeh Ilkhani for reporting the bug and providing a
csv that triggers the crash.
Ben Pfaff [Mon, 21 Oct 2024 17:49:00 +0000 (10:49 -0700)]
MATRIX: Fix test for very large matrix.
I kept getting processes killed as out-of-memory for the "MATRIX - very
large matrices" test. Somehow, GSL was really trying to allocate a
matrix with 230,000,000,000 elements, which would require 1.84 PB of
memory, which I don't have.
This makes the matrix allocator report out-of-memory if a sequence would
have more than about 2 billion elements, fixing my OOM killer problem.
Since gnulib's gettext.h defines pgettext() as macro with string
catenation, it's impossible to add pgettext version API for
pivot_value_new_text(). Rather, the pivot_value creation part is
split into pivot_value_new_text_translate() and let's expand
pgettext() upon calling it.
With this, C_() and NC_() macros are defined for translation with
context.
windows: update spreadsheet build dependency from 0.8 to 0.10
The windows build on cais.etech.fh-augsburg.de failed because
the windows build dependencies script build spread-sheet 0.8
while pspp now insists on 0.10.
When charts are copied to the clipboard, then also text formats
were advertised. This patch restricts the advertised clipboard
formats such that applications choose the correct format.
See: https://savannah.gnu.org/bugs/?65288
The preferred format for charts/images is svg or some image format
For tables no image format is advertised such that John can paste
html as editable table in libreoffice.
The previous commit to fix the "make install" problem in shells which
have a locale setting different from "US" did not work for Bernd on
archlinux. Thanks for reporting the problem!