---
title: "Julia engine: future support"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Julia engine: future support}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(collapse = TRUE, comment = "#>")
```

<style>
@media (max-width: 575.98px) {
  main h1 {
    hyphens: none;
    overflow-wrap: normal;
    word-break: normal;
  }

  main table {
    display: block;
    min-width: 720px;
    max-width: 100%;
    overflow-x: auto;
  }
}
</style>

`drmTMB` currently supports analysis and reporting through its native Template
Model Builder (TMB) engine. The Julia bridge is **halted and
deferred** for this release. It is not part of the current supported model
surface, and users should not rely on `engine = "julia"` for an analysis,
confidence interval, benchmark, or reproducible report.

The deferred work is tracked under issue #499. This page remains in the site so
that readers understand the intended direction: a future Julia backend may
eventually provide an additional execution engine, while preserving the same
R-facing formula and result contract. It is not a request to install Julia,
JuliaCall, or DRM.jl today.

## What to use now

Use the native engine, which is the default. There is no `engine` argument to
set for ordinary work:

```r
fit <- drmTMB(
  bf(y ~ x, sigma ~ x),
  family = gaussian(),
  data = dat
)
```

Continue with the ordinary post-fit workflow:

```r
check_drm(fit)
summary(fit)
```

For model-specific guidance, start with [Model workflow](https://itchyshin.github.io/drmTMB/articles/model-workflow.html),
[Capability and limits](capability-and-limits.html), and the relevant family or
structured-effect tutorial. Those pages state the current TMB-supported
boundaries and inference evidence.

## What future Julia support would need to establish

Before `engine = "julia"` can become a reader-facing option, a future release
needs an explicit admission and validation programme. At minimum, each proposed
model cell would need:

| Requirement | Why it matters |
| --- | --- |
| Formula and data marshalling checks | The R formula, factor levels, missing-data handling, and parameter scales must arrive at the same model. |
| Native-TMB comparison on the same admitted cell | Matching fitted quantities and likelihood conventions must be demonstrated where a native comparator exists. |
| Independent recovery and interval evidence | A finite fit or an internal benchmark does not establish point-estimate or interval reliability. |
| Guardrails for unsupported neighbouring syntax | Users should get a clear error rather than silent feature or scale drift. |
| Reproducible installation and version contract | Optional Julia dependencies must be pinned and documented without becoming required for normal `drmTMB` use. |

Performance results, algorithm comparisons, and development-checkout output
are not release claims. They will be documented only when a specific future
bridge cell has passed this admission process.

## Scope boundary

The deferred Julia work does not change the current package boundary:

- TMB remains the default and supported engine.
- `drmTMB` does not install or require Julia, JuliaCall, or DRM.jl.
- The deferred bridge does not expand current family, structured-effect,
  missing-data, interval, coverage, or simulation claims.
- Cross-family and mixed-family model development remains separate from the
  native bivariate Gaussian scope.

Contributors considering future work should begin with the release manifest,
issue #499, and the native package's current tests and capability ledger rather
than treating an old Julia bridge prototype as a supported API.
