Skip to contents

CanardAbsurd 0.0.1

  • Host a DuckDB workflow database over Quack or use an embedded connection.
  • Submit idempotent task IDs and execute named R handlers through leased claims.
  • Replay native DuckDB values, suspend with durable sleeps, and recover expired leases.
  • Preserve R value mappings and allow explicit serialization through BLOBs.
  • Reject list and data frame names that collide under DuckDB’s ASCII case-insensitive comparison during value admission.
  • Document the driver and engine compatibility requirements for VARIANT storage.
  • Fence stale task writes and support retry budgets and cancellation.
  • Optionally run bounded expired-lease maintenance with a DuckDB C API v1.2 coordinator and an explicit start, status, and stop lifecycle. Development builds load only into databases opened with allow_unsigned_extensions = TRUE.
  • ca_work() retries statements aborted by known write conflicts, with bounded jittered backoff (conflict_retries), so competing workers no longer exit on routine contention.
  • ca_process() supervises an external command in an attempt directory, renewing the lease while it runs and killing it on lease loss, cancellation, or timeout.
  • ca_tasks() lists task metadata without payloads, and ca_result() reads one completed result.
  • ca_close() releases every owned resource even when one cleanup step fails, reporting failures as canard_close_error.
  • Stored values that cannot be restored raise canard_restore_error, a storage error, instead of being recorded as handler failures.
  • In-memory databases and Quack clients now receive the package’s DuckDB configuration. Clients previously ran with DuckDB’s defaults and silently downloaded the httpfs extension that Quack clients load; install httpfs explicitly alongside Quack (make quack does both).