{
  "_id": "6ab251bf3d719c1f8408bb50",
  "Package": "tarpolyglot",
  "Type": "Package",
  "Title": "Run 'Python', 'Julia', 'Rust', and 'C++' Inside 'targets'\nPipeline Steps",
  "Version": "0.3.0",
  "Authors@R": "c(\nperson(\ngiven = \"Pierre\",\nfamily = \"Solomon\",\nemail = \"pierre.solomon@laposte.net\",\nrole = c(\"aut\", \"cre\"),\ncomment = c(ORCID = \"0000-0001-7187-2664\")\n)\n)",
  "Description": "Adds target constructors that make it easy to use\n'Python', 'Julia', 'Rust', and 'C++' inside a 'targets'\npipeline using 'reticulate', 'JuliaCall', 'rextendr', and\n'Rcpp'. Provides tar_target_py(), tar_target_jl(),\ntar_target_rs(), and tar_target_cpp() (with matching _raw()\nvariants), each mirroring 'targets' tar_target() and\ntar_target_raw() functions. 'Python' and 'Julia' steps run a\nscript via a live interpreter with optional R pre- and\npost-scripts; 'Rust' and 'C++' steps compile functions and call\nthem from an R post-script. Results are then returned either as\nconverted R objects or as files written to disk (format =\n\"file\"). Dynamic branching, environment/version selection, a\n'crew' controller for isolation, and the full set of\ntar_target_raw() arguments are supported.",
  "License": "MIT + file LICENSE",
  "URL": "https://github.com/Pierre9344/tarpolyglot,\nhttps://pierre9344.github.io/tarpolyglot/",
  "BugReports": "https://github.com/Pierre9344/tarpolyglot/issues",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "Config/testthat/edition": "3",
  "VignetteBuilder": "knitr",
  "SystemRequirements": "The external language toolchains are optional and\neach is only required by its matching targets constructor: a\nPython installation for tar_target_py(), a Julia installation\nfor tar_target_jl(), a Rust toolchain with Cargo for\ntar_target_rs() (on Windows, the GNU toolchain, to match R's\nABI), and a C++ compiler reachable by R (e.g. via Rtools on\nWindows) for tar_target_cpp(). A pipeline that uses a single\nlanguage needs only that language's toolchain.",
  "Config/roxygen2/version": "8.1.0",
  "Config/pak/sysreqs": "libglpk-dev libicu-dev libpng-dev libxml2-dev\npython3 libclang-dev",
  "Repository": "https://pierre9344.r-universe.dev",
  "Date/Publication": "2026-09-03 05:01:34 UTC",
  "RemoteUrl": "https://github.com/pierre9344/tarpolyglot",
  "RemoteRef": "HEAD",
  "RemoteSha": "50131042a9d0d9ad45bd5331202f8f78dee8d507",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-09-22 09:55:02 UTC",
    "User": "root"
  },
  "Author": "Pierre Solomon [aut, cre] (ORCID:\n<https://orcid.org/0000-0001-7187-2664>)",
  "Maintainer": "Pierre Solomon <pierre.solomon@laposte.net>",
  "_user": "pierre9344",
  "_type": "src",
  "_file": "tarpolyglot_0.3.0.tar.gz",
  "_fileid": "https://r2.ropensci.org/7272359261ed82acec726436ca664dc0b0dbca482faf2f9793a20ed43e00cea0",
  "_filesize": 532547,
  "_sha256": "7272359261ed82acec726436ca664dc0b0dbca482faf2f9793a20ed43e00cea0",
  "_expires": "2026-12-31T10:00:30.000Z",
  "_created": "2026-09-22T09:55:02.000Z",
  "_published": "2026-09-22T10:00:31.749Z",
  "_jobs": [
    {
      "job": 106698182697,
      "time": 178,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "10687556238"
    },
    {
      "job": 106698182780,
      "time": 153,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "10688445927"
    },
    {
      "job": 106698182745,
      "time": 199,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "10688006300"
    },
    {
      "job": 106698182752,
      "time": 191,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "10688496008"
    },
    {
      "job": 106697161806,
      "time": 201,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "10687835183"
    },
    {
      "job": 106698182754,
      "time": 152,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "10688120996"
    },
    {
      "job": 106698182713,
      "time": 88,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "10688000306"
    },
    {
      "job": 106698182730,
      "time": 94,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "10687274248"
    },
    {
      "job": 106698182846,
      "time": 96,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "10687775695"
    }
  ],
  "_host": "GitHub-Actions",
  "_buildurl": "https://github.com/r-universe/pierre9344/actions/runs/35712756310",
  "_status": "success",
  "_upstream": "https://github.com/pierre9344/tarpolyglot",
  "_commit": {
    "id": "50131042a9d0d9ad45bd5331202f8f78dee8d507",
    "author": "PS_Alienware\\pierre <pierre.solomon3@gmail.com>",
    "committer": "PS_Alienware\\pierre <pierre.solomon3@gmail.com>",
    "message": "readme update to add information about C++ support\n",
    "time": 1788411694
  },
  "_maintainer": {
    "name": "Pierre Solomon",
    "email": "pierre.solomon@laposte.net",
    "login": "pierresolomon",
    "description": "",
    "uuid": 73172875,
    "orcid": "0000-0001-7187-2664"
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "targets",
      "role": "Imports"
    },
    {
      "package": "reticulate",
      "role": "Imports"
    },
    {
      "package": "JuliaCall",
      "role": "Imports"
    },
    {
      "package": "crew",
      "role": "Imports"
    },
    {
      "package": "rextendr",
      "role": "Imports"
    },
    {
      "package": "Rcpp",
      "role": "Imports"
    },
    {
      "package": "callr",
      "role": "Imports"
    },
    {
      "package": "cli",
      "role": "Imports"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "tarchetypes",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.2.0",
      "role": "Suggests"
    },
    {
      "package": "withr",
      "role": "Suggests"
    },
    {
      "package": "RcppArmadillo",
      "role": "Suggests"
    }
  ],
  "_owner": "pierre9344",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-31",
      "n": 18
    },
    {
      "week": "2026-32",
      "n": 2
    },
    {
      "week": "2026-33",
      "n": 2
    },
    {
      "week": "2026-35",
      "n": 11
    },
    {
      "week": "2026-36",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "v0.1.0",
      "date": "2026-07-30"
    },
    {
      "name": "v0.2.0",
      "date": "2026-07-31"
    },
    {
      "name": "v0.2.1",
      "date": "2026-09-03"
    }
  ],
  "_stars": 11,
  "_contributors": [
    {
      "user": "pierre9344",
      "count": 35,
      "uuid": 86181677
    }
  ],
  "_userbio": {
    "uuid": 86181677,
    "type": "user",
    "name": "Pierre9344",
    "followers": 2
  },
  "_downloads": {
    "count": 301,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/tarpolyglot"
  },
  "_devurl": "https://github.com/pierre9344/tarpolyglot",
  "_pkgdown": "https://pierre9344.github.io/tarpolyglot/",
  "_searchresults": 0,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "extra/tarpolyglot.html",
    "LICENSE"
  ],
  "_homeurl": "https://github.com/pierre9344/tarpolyglot",
  "_realowner": "pierre9344",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.2.0",
      "date": "2026-08-08"
    },
    {
      "version": "0.2.1",
      "date": "2026-09-08"
    }
  ],
  "_exports": [
    "compile_cpp_lib",
    "compile_rs_lib",
    "polyglot_controller",
    "run_cpp_step",
    "run_cpp_step_prebuilt",
    "run_jl_step",
    "run_py_step",
    "run_rs_step",
    "run_rs_step_prebuilt",
    "tar_code",
    "tar_polyglot_log",
    "tar_target_cpp",
    "tar_target_cpp_raw",
    "tar_target_jl",
    "tar_target_jl_raw",
    "tar_target_path",
    "tar_target_py",
    "tar_target_py_raw",
    "tar_target_rs",
    "tar_target_rs_raw",
    "tarpolyglot_cross",
    "tarpolyglot_head",
    "tarpolyglot_map",
    "tarpolyglot_sample",
    "tarpolyglot_slice",
    "tarpolyglot_tail",
    "toolchain_check"
  ],
  "_help": [
    {
      "page": "polyglot_controller",
      "title": "A crew controller preconfigured for polyglot isolation",
      "topics": [
        "polyglot_controller"
      ]
    },
    {
      "page": "run_cpp_step",
      "title": "Execute a C++ step (worker behind tar_target_cpp)",
      "topics": [
        "run_cpp_step"
      ]
    },
    {
      "page": "run_jl_step",
      "title": "Execute a Julia step (worker behind tar_target_jl)",
      "topics": [
        "run_jl_step"
      ]
    },
    {
      "page": "run_py_step",
      "title": "Execute a Python step (worker behind tar_target_py)",
      "topics": [
        "run_py_step"
      ]
    },
    {
      "page": "run_rs_step",
      "title": "Execute a Rust step (worker behind tar_target_rs)",
      "topics": [
        "run_rs_step"
      ]
    },
    {
      "page": "tar_code",
      "title": "Inline code for a tarpolyglot step",
      "topics": [
        "tar_code"
      ]
    },
    {
      "page": "tar_polyglot_log",
      "title": "Configure per-step stdout/stderr logging",
      "topics": [
        "tar_polyglot_log"
      ]
    },
    {
      "page": "tar_target_cpp",
      "title": "Target that runs a C++ script",
      "topics": [
        "tar_target_cpp"
      ]
    },
    {
      "page": "tar_target_cpp_raw",
      "title": "Target that runs a C++ script (raw / factory form)",
      "topics": [
        "tar_target_cpp_raw"
      ]
    },
    {
      "page": "tar_target_jl",
      "title": "Target that runs a Julia script",
      "topics": [
        "tar_target_jl"
      ]
    },
    {
      "page": "tar_target_jl_raw",
      "title": "Target that runs a Julia script (raw / factory form)",
      "topics": [
        "tar_target_jl_raw"
      ]
    },
    {
      "page": "tar_target_path",
      "title": "Track a script argument as a 'targets' dependency",
      "topics": [
        "tar_target_path"
      ]
    },
    {
      "page": "tar_target_py",
      "title": "Target that runs a Python script",
      "topics": [
        "tar_target_py"
      ]
    },
    {
      "page": "tar_target_py_raw",
      "title": "Target that runs a Python script (raw / factory form)",
      "topics": [
        "tar_target_py_raw"
      ]
    },
    {
      "page": "tar_target_rs",
      "title": "Target that runs a Rust script",
      "topics": [
        "tar_target_rs"
      ]
    },
    {
      "page": "tar_target_rs_raw",
      "title": "Target that runs a Rust script (raw / factory form)",
      "topics": [
        "tar_target_rs_raw"
      ]
    },
    {
      "page": "tarpolyglot_cross",
      "title": "Dynamic-branching cross that compiles Rust once",
      "topics": [
        "tarpolyglot_cross"
      ]
    },
    {
      "page": "tarpolyglot_head",
      "title": "Dynamic-branching head that compiles Rust once",
      "topics": [
        "tarpolyglot_head"
      ]
    },
    {
      "page": "tarpolyglot_map",
      "title": "Dynamic-branching map that compiles Rust/C++ once",
      "topics": [
        "tarpolyglot_map"
      ]
    },
    {
      "page": "tarpolyglot_sample",
      "title": "Dynamic-branching sample that compiles Rust once",
      "topics": [
        "tarpolyglot_sample"
      ]
    },
    {
      "page": "tarpolyglot_slice",
      "title": "Dynamic-branching slice that compiles Rust once",
      "topics": [
        "tarpolyglot_slice"
      ]
    },
    {
      "page": "tarpolyglot_tail",
      "title": "Dynamic-branching tail that compiles Rust once",
      "topics": [
        "tarpolyglot_tail"
      ]
    },
    {
      "page": "toolchain_check",
      "title": "Diagnose the Python, Julia, Rust, and C++ toolchains",
      "topics": [
        "toolchain_check"
      ]
    }
  ],
  "_pkglogo": "https://github.com/pierre9344/tarpolyglot/raw/HEAD/man/figures/logo.svg",
  "_readme": "https://github.com/pierre9344/tarpolyglot/raw/HEAD/README.md",
  "_rundeps": [
    "backports",
    "base64url",
    "brio",
    "callr",
    "cli",
    "codetools",
    "collections",
    "cpp11",
    "crew",
    "data.table",
    "desc",
    "dplyr",
    "evaluate",
    "fastmap",
    "generics",
    "glue",
    "here",
    "highr",
    "igraph",
    "jsonlite",
    "JuliaCall",
    "knitr",
    "later",
    "lattice",
    "lifecycle",
    "magrittr",
    "Matrix",
    "mirai",
    "nanonext",
    "otel",
    "pillar",
    "pkgbuild",
    "pkgconfig",
    "png",
    "prettyunits",
    "processx",
    "promises",
    "ps",
    "R6",
    "rappdirs",
    "Rcpp",
    "RcppTOML",
    "reticulate",
    "rextendr",
    "rjson",
    "rlang",
    "rprojroot",
    "secretbase",
    "stringi",
    "targets",
    "tibble",
    "tidyselect",
    "utf8",
    "vctrs",
    "withr",
    "xfun",
    "yaml"
  ],
  "_vignettes": [
    {
      "source": "get_started.Rmd",
      "filename": "get_started.html",
      "title": "Get started with tarpolyglot",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Motivation",
        "Installation",
        "Limitations to know first",
        "A worked pipeline (Python + iris)",
        "The three-script model",
        "Object output: return a value into the pipeline",
        "File output: return paths to files on disk",
        "Tracking the scripts as dependencies",
        "Parallelism and isolation with crew",
        "Pre- and post-scripts: moving variables in and out",
        "Sending variables in (the pre-script)",
        "Reading variables out (the post-script)",
        "Where to next"
      ],
      "created": "2026-07-30 11:15:49",
      "modified": "2026-08-26 04:45:11",
      "commits": 3
    },
    {
      "source": "scripts.Rmd",
      "filename": "scripts.html",
      "title": "Supplying scripts to tarpolyglot constructors",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The three forms at a glance",
        "1. A literal path string",
        "2. A tar_target_path() reference",
        "3. Inline code with tar_code()",
        "Mixing forms in one call",
        "Which should I use?",
        "Tracking helper files your script imports",
        "Wiring the helper in with inputs",
        "Julia",
        "Why C++ and Rust are different",
        "A note on building code with glue()",
        "See also"
      ],
      "created": "2026-08-26 04:45:11",
      "modified": "2026-08-26 04:45:11",
      "commits": 1
    },
    {
      "source": "cpp.Rmd",
      "filename": "cpp.html",
      "title": "Using C++ inside targets",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Do you need tar_target_cpp()?",
        "The two constructors",
        "How a C++ step differs from the Python/Julia steps",
        "Arguments",
        "Installing Rcpp and checking",
        "Object output (iris example)",
        "File output",
        "Extension packages",
        "Parallel computing with RcppParallel",
        "Bringing an R function into C++",
        "The function is not part of the compiled library",
        "Where the R function can be defined",
        "Dynamic branching",
        "Compile the C++ code only once across branches",
        "They fall back to the plain pattern on Python and Julia",
        "Several C++ steps in one pipeline",
        "Compile once, reuse in other steps",
        "Reusing a tar_target_cpp() companion library elsewhere",
        "Using more than one library in a step",
        "Current limitations",
        "Step output and tar_polyglot_log()",
        "Rtools note (Windows)",
        "Trade-offs vs Python/Julia"
      ],
      "created": "2026-08-26 04:45:11",
      "modified": "2026-08-29 08:55:28",
      "commits": 3
    },
    {
      "source": "julia.Rmd",
      "filename": "julia.html",
      "title": "Using Julia inside targets",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The two constructors",
        "Arguments",
        "Scripts, data, and output",
        "Choosing the Julia install / project",
        "The three-script model",
        "Object output",
        "File output",
        "Dynamic branching (iris example)",
        "Parallel computing (Distributed, not Threads)",
        "Choosing the Julia install and project",
        "Use case 1: Julia on PATH (default)",
        "Use case 2: a specific juliaup version",
        "Use case 3: an explicit Julia home",
        "Use case 4: a pinned project (recommended)",
        "Tracking scripts as dependencies",
        "Conversion caveats"
      ],
      "created": "2026-07-30 11:15:49",
      "modified": "2026-08-27 07:25:29",
      "commits": 4
    },
    {
      "source": "python.Rmd",
      "filename": "python.html",
      "title": "Using Python inside targets",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The two constructors",
        "Arguments",
        "Scripts",
        "Wiring in data and reading it back",
        "Choosing the interpreter / environment",
        "The three-script model",
        "Object output",
        "File output",
        "Dynamic branching",
        "Parallel computing (multiprocessing)",
        "Choosing the Python environment",
        "Use case 1: global / system default",
        "Use case 2: a pinned uv virtualenv (recommended)",
        "Use case 3: a poetry project",
        "Use case 4: a plain venv or a conda env",
        "Use case 5: pin just the version",
        "Tracking scripts as dependencies",
        "Conversion caveats"
      ],
      "created": "2026-07-30 11:15:49",
      "modified": "2026-08-27 07:25:29",
      "commits": 4
    },
    {
      "source": "rust.Rmd",
      "filename": "rust.html",
      "title": "Using Rust inside targets",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Do you need tar_target_rs()?",
        "The two constructors",
        "How a Rust step differs",
        "Arguments",
        "Installing Rust and rextendr",
        "Object output (iris example)",
        "File output",
        "Crate dependencies, features, profile",
        "Dynamic branching",
        "Compile the Rust code only once across branches",
        "They fall back to the plain pattern on Python and Julia",
        "Several Rust steps in one pipeline",
        "Compile once, reuse in other steps",
        "Using more than one library in a step",
        "Current limitations",
        "Windows toolchain note",
        "Trade-offs vs Python/Julia"
      ],
      "created": "2026-07-30 11:15:49",
      "modified": "2026-08-27 07:25:29",
      "commits": 5
    }
  ],
  "_score": 6.217483944213906,
  "_indexed": true,
  "_nocasepkg": "tarpolyglot",
  "_universes": [
    "pierre9344",
    "pierresolomon"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.3.0",
      "date": "2026-09-22T09:57:58.000Z",
      "distro": "resolute",
      "commit": "50131042a9d0d9ad45bd5331202f8f78dee8d507",
      "fileid": "https://r2.ropensci.org/f663b39c9803c764c3bbd5ac59ff3d53af55b3c567369a2db8f9320574717637",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/pierre9344/actions/runs/35712756310"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.3.0",
      "date": "2026-09-22T09:58:14.000Z",
      "distro": "resolute",
      "commit": "50131042a9d0d9ad45bd5331202f8f78dee8d507",
      "fileid": "https://r2.ropensci.org/e6e17f4545c332106c40ac0eeb7cffcdd33c7ae60ebfec4c9bfd4424807fefea",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/pierre9344/actions/runs/35712756310"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.3.0",
      "date": "2026-09-22T09:59:02.000Z",
      "commit": "50131042a9d0d9ad45bd5331202f8f78dee8d507",
      "fileid": "https://r2.ropensci.org/c1d144c5c508d8c13e325a8cd6cb87cbf953f03ae097608382351684ee44bef3",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/pierre9344/actions/runs/35712756310"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.3.0",
      "date": "2026-09-22T09:58:47.000Z",
      "commit": "50131042a9d0d9ad45bd5331202f8f78dee8d507",
      "fileid": "https://r2.ropensci.org/ca6d5174405df9c082f7b10a5f8366e91ab5dee3b1397e867e848451ec2964e6",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/pierre9344/actions/runs/35712756310"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.3.0",
      "date": "2026-09-22T09:57:56.000Z",
      "commit": "50131042a9d0d9ad45bd5331202f8f78dee8d507",
      "fileid": "https://r2.ropensci.org/ce6e0cead8484f178270e33d6064c7db3915b12422ee13e0caf75daa843dcabe",
      "status": "success",
      "buildurl": "https://github.com/r-universe/pierre9344/actions/runs/35712756310"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.3.0",
      "date": "2026-09-22T09:56:19.000Z",
      "commit": "50131042a9d0d9ad45bd5331202f8f78dee8d507",
      "fileid": "https://r2.ropensci.org/3f34765f2ead6e3972e3873018475d2b23b21879c43cf619f0b1cc3cf7f5e055",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/pierre9344/actions/runs/35712756310"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.3.0",
      "date": "2026-09-22T09:56:21.000Z",
      "commit": "50131042a9d0d9ad45bd5331202f8f78dee8d507",
      "fileid": "https://r2.ropensci.org/3f7fbd904f0c73342a841a93d635ed31fa7d604d8dacf2706f7a6ab19c021feb",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/pierre9344/actions/runs/35712756310"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.3.0",
      "date": "2026-09-22T09:56:25.000Z",
      "commit": "50131042a9d0d9ad45bd5331202f8f78dee8d507",
      "fileid": "https://r2.ropensci.org/94f530c51abaecf507139775af8fcfc7929da6804eee6d26fb8d6ca8d065b66f",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/pierre9344/actions/runs/35712756310"
    }
  ]
}