{
  "_id": "6a1f1a9ab401979e7341f1e5",
  "Package": "ply",
  "Type": "Package",
  "Title": "Bitboard Chess Engine",
  "Version": "0.1.0",
  "Authors@R": "person(\"Qusai\", \"Jouda\", email = \"jouda.qusai@gmail.com\",\nrole = c(\"aut\", \"cre\"))",
  "Author": "Qusai Jouda [aut, cre]",
  "Maintainer": "Qusai Jouda <jouda.qusai@gmail.com>",
  "Description": "A fully legal chess move generator and game engine\nimplemented in C++17 via 'Rcpp'. Provides FEN (Forsyth-Edwards\nNotation) parsing, PGN (Portable Game Notation) replay,\nposition feature enrichment, and a multi-game registry backed\nby a bitboard representation.",
  "License": "MIT + file LICENSE",
  "Encoding": "UTF-8",
  "RoxygenNote": "7.3.3",
  "NeedsCompilation": "yes",
  "Packaged": {
    "Date": "2026-05-16 09:25:22 UTC",
    "User": "root"
  },
  "Repository": "https://qjouda.r-universe.dev",
  "Date/Publication": "2026-03-30 11:31:24 UTC",
  "RemoteUrl": "https://github.com/cran/ply",
  "RemoteRef": "HEAD",
  "RemoteSha": "4752ceeef78616d6b2cd7a42eb043d0271c6ec54",
  "MD5sum": "f699358b93249b355f19923755dba8a1",
  "_user": "qjouda",
  "_type": "src",
  "_file": "ply_0.1.0.tar.gz",
  "_fileid": "858c19ad696639c0a94001a4adea04700812c1a5510bfb57bafde9fe84b66b0f",
  "_filesize": 173240,
  "_sha256": "858c19ad696639c0a94001a4adea04700812c1a5510bfb57bafde9fe84b66b0f",
  "_created": "2026-05-16T09:25:22.000Z",
  "_published": "2026-06-02T18:02:02.550Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 79138341230,
      "time": 139,
      "config": "linux-devel-arm64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7032304004"
    },
    {
      "job": 79138341730,
      "time": 102,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7032300147"
    },
    {
      "job": 79138341700,
      "time": 134,
      "config": "linux-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7032303254"
    },
    {
      "job": 79138341867,
      "time": 115,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7032301481"
    },
    {
      "job": 79138341578,
      "time": 168,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7032305987"
    },
    {
      "job": 79138341884,
      "time": 627,
      "config": "macos-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7032342542"
    },
    {
      "job": 79138341638,
      "time": 132,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7032306108"
    },
    {
      "job": 79138340996,
      "time": 317,
      "config": "macos-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7032320753"
    },
    {
      "job": 79138340824,
      "time": 161,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7032290073"
    },
    {
      "job": 79138340656,
      "time": 105,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7365866113"
    },
    {
      "job": 79138341918,
      "time": 119,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7032301783"
    },
    {
      "job": 79138342116,
      "time": 210,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7032311226"
    },
    {
      "job": 79138341907,
      "time": 199,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7032309764"
    }
  ],
  "_buildurl": "https://github.com/r-universe/qjouda/actions/runs/25958351570",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/cran/ply",
  "_commit": {
    "id": "4752ceeef78616d6b2cd7a42eb043d0271c6ec54",
    "author": "Qusai Jouda <jouda.qusai@gmail.com>",
    "committer": "cran-robot <csardi.gabor+cran@gmail.com>",
    "message": "version 0.1.0\n",
    "time": 1774870284
  },
  "_maintainer": {
    "name": "Qusai Jouda",
    "email": "jouda.qusai@gmail.com",
    "login": "qjouda",
    "uuid": 2385392
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "Rcpp",
      "role": "LinkingTo"
    },
    {
      "package": "Rcpp",
      "version": ">= 1.0.0",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    }
  ],
  "_owner": "cran",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-14",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "0.1.0",
      "date": "2026-03-30"
    }
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "qjouda",
      "count": 1,
      "uuid": 2385392
    }
  ],
  "_userbio": {
    "uuid": 2385392,
    "type": "user",
    "name": "Qusai"
  },
  "_downloads": {
    "count": 503,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/ply"
  },
  "_searchresults": 3,
  "_topics": [
    "cpp"
  ],
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/ply.html",
    "extra/readme.html",
    "extra/readme.md",
    "manual.pdf"
  ],
  "_realowner": "qjouda",
  "_cranurl": false,
  "_releases": [
    {
      "version": "0.1.0",
      "date": "2026-03-30"
    }
  ],
  "_exports": [
    "ply_enrich_batch",
    "ply_fen_parse",
    "ply_fen_serialize",
    "ply_game_accept_draw",
    "ply_game_cancel",
    "ply_game_count",
    "ply_game_fen",
    "ply_game_history",
    "ply_game_info",
    "ply_game_init",
    "ply_game_join",
    "ply_game_move",
    "ply_game_new",
    "ply_game_new_from_fen",
    "ply_game_offer_draw",
    "ply_game_reset_registry",
    "ply_game_resign",
    "ply_hash",
    "ply_in_check",
    "ply_is_checkmate",
    "ply_is_insufficient_material",
    "ply_is_stalemate",
    "ply_legal_moves",
    "ply_move_apply",
    "ply_pgn_extract_movetext",
    "ply_pgn_load_games",
    "ply_pgn_parse_tags",
    "ply_validate"
  ],
  "_help": [
    {
      "page": "ply_enrich_batch",
      "title": "Enrich a batch of positions with chess features",
      "topics": [
        "ply_enrich_batch"
      ]
    },
    {
      "page": "ply_fen_parse",
      "title": "Parse a FEN string into a ChessState list",
      "topics": [
        "ply_fen_parse"
      ]
    },
    {
      "page": "ply_fen_serialize",
      "title": "Convert a ChessState list back to a FEN string",
      "topics": [
        "ply_fen_serialize"
      ]
    },
    {
      "page": "ply_game_accept_draw",
      "title": "Accept an outstanding draw offer in a managed game",
      "topics": [
        "ply_game_accept_draw"
      ]
    },
    {
      "page": "ply_game_cancel",
      "title": "Cancel a waiting managed game",
      "topics": [
        "ply_game_cancel"
      ]
    },
    {
      "page": "ply_game_count",
      "title": "Return the number of games currently held in the registry",
      "topics": [
        "ply_game_count"
      ]
    },
    {
      "page": "ply_game_fen",
      "title": "Get the current FEN for a managed game",
      "topics": [
        "ply_game_fen"
      ]
    },
    {
      "page": "ply_game_history",
      "title": "Get the full ply history of a managed game as UCI strings",
      "topics": [
        "ply_game_history"
      ]
    },
    {
      "page": "ply_game_info",
      "title": "Get metadata for a managed game",
      "topics": [
        "ply_game_info"
      ]
    },
    {
      "page": "ply_game_init",
      "title": "Return a ChessState list at the standard starting position",
      "topics": [
        "ply_game_init"
      ]
    },
    {
      "page": "ply_game_join",
      "title": "Join an existing game as the opposing player",
      "topics": [
        "ply_game_join"
      ]
    },
    {
      "page": "ply_game_move",
      "title": "Make a move in a managed game by UCI string",
      "topics": [
        "ply_game_move"
      ]
    },
    {
      "page": "ply_game_new",
      "title": "Create a new managed game",
      "topics": [
        "ply_game_new"
      ]
    },
    {
      "page": "ply_game_new_from_fen",
      "title": "Create a new managed game from a custom starting position",
      "topics": [
        "ply_game_new_from_fen"
      ]
    },
    {
      "page": "ply_game_offer_draw",
      "title": "Offer or toggle a draw in a managed game",
      "topics": [
        "ply_game_offer_draw"
      ]
    },
    {
      "page": "ply_game_reset_registry",
      "title": "Reset (clear) the global game registry",
      "topics": [
        "ply_game_reset_registry"
      ]
    },
    {
      "page": "ply_game_resign",
      "title": "Resign a managed game",
      "topics": [
        "ply_game_resign"
      ]
    },
    {
      "page": "ply_hash",
      "title": "Compute a Zobrist-style position hash",
      "topics": [
        "ply_hash"
      ]
    },
    {
      "page": "ply_in_check",
      "title": "Test whether a side is in check",
      "topics": [
        "ply_in_check"
      ]
    },
    {
      "page": "ply_is_checkmate",
      "title": "Test whether the position is checkmate",
      "topics": [
        "ply_is_checkmate"
      ]
    },
    {
      "page": "ply_is_insufficient_material",
      "title": "Test whether the position is a draw by insufficient material",
      "topics": [
        "ply_is_insufficient_material"
      ]
    },
    {
      "page": "ply_is_stalemate",
      "title": "Test whether the position is stalemate",
      "topics": [
        "ply_is_stalemate"
      ]
    },
    {
      "page": "ply_legal_moves",
      "title": "List all legal moves from a position as UCI strings",
      "topics": [
        "ply_legal_moves"
      ]
    },
    {
      "page": "ply_move_apply",
      "title": "Apply a UCI move string to a position",
      "topics": [
        "ply_move_apply"
      ]
    },
    {
      "page": "ply_pgn_extract_movetext",
      "title": "Extract clean SAN movetext tokens from a PGN game block",
      "topics": [
        "ply_pgn_extract_movetext"
      ]
    },
    {
      "page": "ply_pgn_load_games",
      "title": "Load a PGN file and return a data.frame of game-level metadata",
      "topics": [
        "ply_pgn_load_games"
      ]
    },
    {
      "page": "ply_pgn_parse_tags",
      "title": "Parse PGN tag pairs from a raw game block",
      "topics": [
        "ply_pgn_parse_tags"
      ]
    },
    {
      "page": "ply_validate",
      "title": "Validate a position (piece counts, king count, etc.)",
      "topics": [
        "ply_validate"
      ]
    }
  ],
  "_readme": "https://github.com/cran/ply/raw/HEAD/README.md",
  "_rundeps": [
    "Rcpp"
  ],
  "_sysdeps": [
    {
      "shlib": "libstdc++",
      "package": "libstdc++6",
      "source": "gcc",
      "version": "14.2.0-4ubuntu2~24.04.1",
      "name": "c++",
      "homepage": "http://gcc.gnu.org/",
      "description": "GNU Standard C++ Library v3"
    }
  ],
  "_score": 1.6989700043360187,
  "_indexed": true,
  "_nocasepkg": "ply",
  "_universes": [
    "qjouda"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.1.0",
      "date": "2026-05-16T09:27:42.000Z",
      "distro": "noble",
      "arch": "aarch64",
      "commit": "4752ceeef78616d6b2cd7a42eb043d0271c6ec54",
      "fileid": "a55f8c1efe080b1f3a3b09001e640f6d76e0e428b365b5bd15c40e5df3ea773d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/qjouda/actions/runs/25958351570"
    },
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.1.0",
      "date": "2026-05-16T09:27:06.000Z",
      "distro": "noble",
      "arch": "x86_64",
      "commit": "4752ceeef78616d6b2cd7a42eb043d0271c6ec54",
      "fileid": "1e903fa57f8196014c505185be6385c46408768565086cd982c07f42ddc18426",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/qjouda/actions/runs/25958351570"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.1.0",
      "date": "2026-05-16T09:27:37.000Z",
      "distro": "noble",
      "arch": "aarch64",
      "commit": "4752ceeef78616d6b2cd7a42eb043d0271c6ec54",
      "fileid": "81cfccdbf98e60d9a4ef8ba89debcfd650cf16c58392aca729d8a353f04e8203",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/qjouda/actions/runs/25958351570"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.1.0",
      "date": "2026-05-16T09:27:17.000Z",
      "distro": "noble",
      "arch": "x86_64",
      "commit": "4752ceeef78616d6b2cd7a42eb043d0271c6ec54",
      "fileid": "a941f01283ad51d7addd1bf78c4d8ea26c89961d220b8c0a27d0cd26993ba957",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/qjouda/actions/runs/25958351570"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.1.0",
      "date": "2026-05-16T09:28:02.000Z",
      "arch": "aarch64",
      "commit": "4752ceeef78616d6b2cd7a42eb043d0271c6ec54",
      "fileid": "a4e74bbff121fe8d4ea68967f73b6a0ada3cfd5b088a9d763e9dd8b4de4590de",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/qjouda/actions/runs/25958351570"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.1.0",
      "date": "2026-05-16T09:31:52.000Z",
      "arch": "x86_64",
      "commit": "4752ceeef78616d6b2cd7a42eb043d0271c6ec54",
      "fileid": "6f445235ea3ba93c91b0c57429cb0ca4f1eaf9fea1b49103ad9c6aa6608e244e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/qjouda/actions/runs/25958351570"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "0.1.0",
      "date": "2026-05-16T09:28:05.000Z",
      "arch": "aarch64",
      "commit": "4752ceeef78616d6b2cd7a42eb043d0271c6ec54",
      "fileid": "cfc11989eeac6fc38997c2a88fe7dff047f59d16f73bf0ac6c80f3e0fb7f39da",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/qjouda/actions/runs/25958351570"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "0.1.0",
      "date": "2026-05-16T09:30:00.000Z",
      "arch": "x86_64",
      "commit": "4752ceeef78616d6b2cd7a42eb043d0271c6ec54",
      "fileid": "8aa6b3dffd6b1983538216761d59ac7c592d4f9bb73a086874bdda779148f378",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/qjouda/actions/runs/25958351570"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.1.0",
      "date": "2026-05-16T09:26:51.000Z",
      "arch": "x86_64",
      "commit": "4752ceeef78616d6b2cd7a42eb043d0271c6ec54",
      "fileid": "6847e078b3fbe4ec643687c09a886d0a3e5e4076546aabcf5f3dafb79c01d5a6",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/qjouda/actions/runs/25958351570"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.1.0",
      "date": "2026-05-16T09:27:45.000Z",
      "arch": "x86_64",
      "commit": "4752ceeef78616d6b2cd7a42eb043d0271c6ec54",
      "fileid": "02ae1317e8d0de7c2b0252f804c3aa6079ad6c4324438179a9d24ff58134c2e2",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/qjouda/actions/runs/25958351570"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "0.1.0",
      "date": "2026-05-16T09:27:22.000Z",
      "arch": "x86_64",
      "commit": "4752ceeef78616d6b2cd7a42eb043d0271c6ec54",
      "fileid": "908fb84df4e06885fe7f3b5f4a6a71f8e820d4f8e1f9056aee942c6d5c1aa5ae",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/qjouda/actions/runs/25958351570"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.1.0",
      "date": "2026-06-02T18:01:40.000Z",
      "arch": "emscripten",
      "commit": "4752ceeef78616d6b2cd7a42eb043d0271c6ec54",
      "fileid": "d42f8edb8e3fd13bca7d3c86945f47aa90f79162936926688c635bd40aaadd1e",
      "status": "success",
      "buildurl": "https://github.com/r-universe/qjouda/actions/runs/25958351570"
    }
  ]
}