{
  "_id": "6a1ed39db401979e7340e04e",
  "Package": "rfsrs",
  "Title": "R Bindings for FSRS Spaced Repetition Algorithm",
  "Version": "0.3.2",
  "Authors@R": "person(\"Christos\", \"Longros\", email = \"chris.longros@gmail.com\",\nrole = c(\"aut\", \"cre\"))",
  "Description": "R bindings for the fsrs-rs Rust library implementing the\nFree Spaced Repetition Scheduler (FSRS) algorithm. FSRS is a\nmodern spaced repetition algorithm based on the DSR\n(Difficulty, Stability, Retrievability) model of memory.\nIncludes parameter optimization to train custom parameters from\nyour review history, achieving better scheduling accuracy than\ndefault parameters or traditional algorithms like SM-2.",
  "License": "MIT + file LICENSE",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "7.3.3",
  "URL": "https://github.com/open-spaced-repetition/r-fsrs,\nhttps://chrislongros.r-universe.dev/rfsrs",
  "BugReports": "https://github.com/open-spaced-repetition/r-fsrs/issues",
  "SystemRequirements": "Cargo (Rust's package manager), rustc",
  "Config/rextendr/version": "0.4.2",
  "Config/testthat/edition": "3",
  "VignetteBuilder": "knitr",
  "Config/pak/sysreqs": "libclang-dev",
  "Repository": "https://chrislongros.r-universe.dev",
  "Date/Publication": "2026-04-20 15:48:02 UTC",
  "RemoteUrl": "https://github.com/open-spaced-repetition/r-fsrs",
  "RemoteRef": "master",
  "RemoteSha": "3e656fb1be7ce85152c3bc8cd87d8d675469d9b8",
  "NeedsCompilation": "yes",
  "Packaged": {
    "Date": "2026-05-20 10:05:55 UTC",
    "User": "root"
  },
  "Author": "Christos Longros [aut, cre]",
  "Maintainer": "Christos Longros <chris.longros@gmail.com>",
  "MD5sum": "17e828137453174818d10aadfc6f58a2",
  "_user": "chrislongros",
  "_type": "src",
  "_file": "rfsrs_0.3.2.tar.gz",
  "_fileid": "307278cc4e47ba9d4805099e9ebc51068a1fff50ab36e42ba0a52bd762b31887",
  "_filesize": 380994,
  "_sha256": "307278cc4e47ba9d4805099e9ebc51068a1fff50ab36e42ba0a52bd762b31887",
  "_created": "2026-05-20T10:05:55.000Z",
  "_published": "2026-06-02T12:59:09.673Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 79075722708,
      "time": 195,
      "config": "linux-devel-arm64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7107155931"
    },
    {
      "job": 79075744955,
      "time": 207,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7107160897"
    },
    {
      "job": 79075723006,
      "time": 180,
      "config": "linux-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7107150844"
    },
    {
      "job": 79075750402,
      "time": 206,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7107160426"
    },
    {
      "job": 79075740026,
      "time": 171,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "NOTE",
      "artifact": "7107147808"
    },
    {
      "job": 79075722616,
      "time": 302,
      "config": "macos-oldrel-x86_64",
      "r": "4.5.3",
      "check": "NOTE",
      "artifact": "7107195014"
    },
    {
      "job": 79075749948,
      "time": 200,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "WARNING",
      "artifact": "7107157048"
    },
    {
      "job": 79075738913,
      "time": 540,
      "config": "macos-release-x86_64",
      "r": "4.6.0",
      "check": "WARNING",
      "artifact": "7107280853"
    },
    {
      "job": 79075752187,
      "time": 326,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7107086246"
    },
    {
      "job": 79075721780,
      "time": 168,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "FAIL",
      "artifact": ""
    },
    {
      "job": 79075722402,
      "time": 313,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "FAIL",
      "artifact": ""
    },
    {
      "job": 79075722802,
      "time": 229,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "FAIL",
      "artifact": ""
    },
    {
      "job": 79075745997,
      "time": 264,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "FAIL",
      "artifact": ""
    }
  ],
  "_buildurl": "https://github.com/r-universe/chrislongros/actions/runs/26155461100",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/open-spaced-repetition/r-fsrs",
  "_commit": {
    "id": "3e656fb1be7ce85152c3bc8cd87d8d675469d9b8",
    "author": "Christos Longros <chris.longros@gmail.com>",
    "committer": "Christos Longros <chris.longros@gmail.com>",
    "message": "Release 0.3.2: hide direct Rust bindings behind _raw suffix\n\nThe public API is now the validated wrappers in fsrs_api.R only.\nDirect bindings in extendr-wrappers.R are renamed with `_raw`\nsuffix and dropped from NAMESPACE.\n\nBreaking change: fsrs_default_parameters, fsrs_initial_state,\nfsrs_next_state, fsrs_next_interval, fsrs_retrievability are no\nlonger exported. Use fsrs_parameters, fsrs_new_card_state,\nfsrs_next_memory_state, fsrs_interval, fsrs_recall_probability.\n\n* Add fsrs_memory_state_from_history() wrapping the previously\n  orphaned fsrs_memory_state_raw.\n* Phase 1 input-validation pass: all wrappers reject NA/NaN/Inf,\n  wrong lengths, non-integer ratings, and params with NA/NaN/Inf.\n  New internal helpers .check_scalar_positive, .check_rating_scalar,\n  .check_retention, .check_params, etc.\n* fsrs_optimize / fsrs_evaluate validate column types and reject\n  non-integer ratings that were silently truncated before.\n* fsrs_anki_to_reviews validates min_reviews >= 1.\n* Update test-optimizer.R regex to match new error message.\n* Delete obsolete man pages for the internal bindings.\n* README: drop the dual-API section; single Low-Level Functions table.\n\nSigned-off-by: Christos Longros <chris.longros@gmail.com>\n",
    "time": 1776700082
  },
  "_maintainer": {
    "name": "Christos Longros",
    "email": "chris.longros@gmail.com",
    "login": "chrislongros",
    "mastodon": "@chrislongros@mastodon.social",
    "description": "UNIX, open source and spaced repetition learning enthusiast",
    "uuid": 98426896
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.2",
      "role": "Depends"
    },
    {
      "package": "R6",
      "role": "Imports"
    },
    {
      "package": "jsonlite",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    }
  ],
  "_owner": "open-spaced-repetition",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-03",
      "n": 20
    },
    {
      "week": "2026-05",
      "n": 3
    },
    {
      "week": "2026-06",
      "n": 6
    },
    {
      "week": "2026-08",
      "n": 8
    },
    {
      "week": "2026-12",
      "n": 2
    },
    {
      "week": "2026-13",
      "n": 3
    },
    {
      "week": "2026-16",
      "n": 1
    },
    {
      "week": "2026-17",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "v0.1.0",
      "date": "2026-01-17"
    },
    {
      "name": "v0.2.0",
      "date": "2026-02-01"
    },
    {
      "name": "v0.3.0",
      "date": "2026-02-01"
    }
  ],
  "_stars": 3,
  "_contributors": [
    {
      "user": "chrislongros",
      "count": 43,
      "uuid": 98426896
    }
  ],
  "_userbio": {
    "uuid": 98426896,
    "type": "user",
    "name": "Christos Longros",
    "description": "UNIX, open source and spaced repetition learning enthusiast"
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/rfsrs"
  },
  "_devurl": "https://github.com/open-spaced-repetition/r-fsrs",
  "_searchresults": 5,
  "_cargo": true,
  "_topics": [
    "rust",
    "cargo"
  ],
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "extra/rfsrs.html",
    "manual.pdf"
  ],
  "_cranurl": false,
  "_exports": [
    "Card",
    "Card_from_json",
    "fsrs_anki_to_reviews",
    "fsrs_evaluate",
    "fsrs_interval",
    "fsrs_memory_state_from_history",
    "fsrs_migrate_sm2",
    "fsrs_new_card_state",
    "fsrs_next_memory_state",
    "fsrs_optimize",
    "fsrs_parameters",
    "fsrs_recall_probability",
    "fsrs_recall_probability_vec",
    "fsrs_simulate",
    "fsrs_version",
    "Rating",
    "ReviewLog",
    "Scheduler",
    "Scheduler_from_json",
    "State"
  ],
  "_help": [
    {
      "page": "Card",
      "title": "FSRS Card",
      "topics": [
        "Card"
      ]
    },
    {
      "page": "Card_from_json",
      "title": "Create Card from JSON",
      "topics": [
        "Card_from_json"
      ]
    },
    {
      "page": "fsrs_anki_to_reviews",
      "title": "Convert Anki Review Log to FSRS Format",
      "topics": [
        "fsrs_anki_to_reviews"
      ]
    },
    {
      "page": "fsrs_evaluate",
      "title": "Evaluate FSRS Parameters",
      "topics": [
        "fsrs_evaluate"
      ]
    },
    {
      "page": "fsrs_interval",
      "title": "Next review interval",
      "topics": [
        "fsrs_interval"
      ]
    },
    {
      "page": "fsrs_memory_state_from_history",
      "title": "Memory state replayed from a rating history",
      "topics": [
        "fsrs_memory_state_from_history"
      ]
    },
    {
      "page": "fsrs_migrate_sm2",
      "title": "Migrate an SM-2 card to FSRS",
      "topics": [
        "fsrs_migrate_sm2"
      ]
    },
    {
      "page": "fsrs_new_card_state",
      "title": "Initial memory state for a new card",
      "topics": [
        "fsrs_new_card_state"
      ]
    },
    {
      "page": "fsrs_next_memory_state",
      "title": "Memory state after a review",
      "topics": [
        "fsrs_next_memory_state"
      ]
    },
    {
      "page": "fsrs_optimize",
      "title": "Optimize FSRS Parameters",
      "topics": [
        "fsrs_optimize"
      ]
    },
    {
      "page": "fsrs_parameters",
      "title": "Default FSRS parameters",
      "topics": [
        "fsrs_parameters"
      ]
    },
    {
      "page": "fsrs_recall_probability",
      "title": "Retrievability",
      "topics": [
        "fsrs_recall_probability"
      ]
    },
    {
      "page": "fsrs_recall_probability_vec",
      "title": "Vectorized retrievability",
      "topics": [
        "fsrs_recall_probability_vec"
      ]
    },
    {
      "page": "fsrs_simulate",
      "title": "Simulate Learning a Card",
      "topics": [
        "fsrs_simulate"
      ]
    },
    {
      "page": "fsrs_version",
      "title": "Get the FSRS algorithm version used by this package",
      "topics": [
        "fsrs_version"
      ]
    },
    {
      "page": "Rating",
      "title": "FSRS Rating",
      "topics": [
        "Rating"
      ]
    },
    {
      "page": "ReviewLog",
      "title": "FSRS Review Log",
      "topics": [
        "ReviewLog"
      ]
    },
    {
      "page": "Scheduler",
      "title": "FSRS Scheduler",
      "topics": [
        "Scheduler"
      ]
    },
    {
      "page": "Scheduler_from_json",
      "title": "Create Scheduler from JSON",
      "topics": [
        "Scheduler_from_json"
      ]
    },
    {
      "page": "State",
      "title": "FSRS State",
      "topics": [
        "State"
      ]
    }
  ],
  "_readme": "https://github.com/open-spaced-repetition/r-fsrs/raw/master/README.md",
  "_rundeps": [
    "jsonlite",
    "R6"
  ],
  "_vignettes": [
    {
      "source": "getting-started.Rmd",
      "filename": "getting-started.html",
      "title": "Getting Started with rfsrs",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "Understanding FSRS",
        "The Memory Model",
        "Retrievability",
        "Basic Usage",
        "Creating a New Card",
        "Checking Retrievability",
        "Getting the Next Interval",
        "Simulating a Review",
        "Simulating Long-term Learning",
        "FSRS Parameters",
        "Summary"
      ],
      "created": "2026-01-17 16:57:01",
      "modified": "2026-03-25 15:32:11",
      "commits": 7
    }
  ],
  "_score": 4.079181246047625,
  "_indexed": true,
  "_nocasepkg": "rfsrs",
  "_universes": [
    "chrislongros",
    "open-spaced-repetition"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.3.2",
      "date": "2026-05-20T10:09:42.000Z",
      "distro": "noble",
      "arch": "aarch64",
      "commit": "3e656fb1be7ce85152c3bc8cd87d8d675469d9b8",
      "fileid": "b4f9db1d5d4830c8887d80439cd09d5ce25d3964ab1137e310910000463f8bb1",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/chrislongros/actions/runs/26155461100"
    },
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.3.2",
      "date": "2026-05-20T10:09:28.000Z",
      "distro": "noble",
      "arch": "x86_64",
      "commit": "3e656fb1be7ce85152c3bc8cd87d8d675469d9b8",
      "fileid": "9a6f544f9e9b03d6f02f59949d86c34c88f92cdbc832ae2e7820fd407630019e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/chrislongros/actions/runs/26155461100"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.3.2",
      "date": "2026-05-20T10:09:28.000Z",
      "distro": "noble",
      "arch": "aarch64",
      "commit": "3e656fb1be7ce85152c3bc8cd87d8d675469d9b8",
      "fileid": "4d21f945f6a680f4b1f73d3fc5151f52fafdeddf82a12fd7b5edeff2d5a69d86",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/chrislongros/actions/runs/26155461100"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.3.2",
      "date": "2026-05-20T10:09:30.000Z",
      "distro": "noble",
      "arch": "x86_64",
      "commit": "3e656fb1be7ce85152c3bc8cd87d8d675469d9b8",
      "fileid": "c0a6a5fb80bfa2df4d7d8910c7c3a21f59c2f834d63e173937b9907a72728034",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/chrislongros/actions/runs/26155461100"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.3.2",
      "date": "2026-05-20T10:08:49.000Z",
      "arch": "aarch64",
      "commit": "3e656fb1be7ce85152c3bc8cd87d8d675469d9b8",
      "fileid": "fac45766b17739d2f209bde0a7153aff2ad5186ebeba5b4563257af73711c27b",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/chrislongros/actions/runs/26155461100"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.3.2",
      "date": "2026-05-20T10:09:42.000Z",
      "arch": "x86_64",
      "commit": "3e656fb1be7ce85152c3bc8cd87d8d675469d9b8",
      "fileid": "94a0309e28f8595bb009ecc981ae2b702c0d5ed74f932785ee4604f9394539bb",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/chrislongros/actions/runs/26155461100"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "0.3.2",
      "date": "2026-05-20T10:08:58.000Z",
      "arch": "aarch64",
      "commit": "3e656fb1be7ce85152c3bc8cd87d8d675469d9b8",
      "fileid": "c993e173152e899c843a5875c9a95408059da9bf5cb0062c2ee9e6bcc1d67161",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/chrislongros/actions/runs/26155461100"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "0.3.2",
      "date": "2026-05-20T10:11:54.000Z",
      "arch": "x86_64",
      "commit": "3e656fb1be7ce85152c3bc8cd87d8d675469d9b8",
      "fileid": "18aa024dac89819300c2b8ae12bb652d0f007f35683fc91590ff78478e171f55",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/chrislongros/actions/runs/26155461100"
    }
  ]
}