# std/private/since

Theme:

- Manual
- Standard library
- Index
- Compiler docs
- Fusion docs
- devel, stable

Search:
Source Edit

`since` is used to emulate older versions of nim stdlib, see `tuse_version.nim`.

If a symbol `foo` is added in version `(1,3,5)`, use `{.since: (1.3.5).}`, not `{.since: (1.4).}`, so that it works in devel in between releases.

The emulation cannot be 100% faithful and to avoid adding too much complexity, `since` is not needed in those cases:

- if a new module is added
- if an overload is added
- if an extra parameter to an existing routine is added

# Templates

    template since(version: (int, int); body: untyped) {.dirty.}

  Evaluates `body` if the `(NimMajor, NimMinor)` is greater than or equal to `version`. Usage:

      proc fun*() {.since: (1, 3).}
      since (1, 3): fun()

  Source Edit

    template since(version: (int, int, int); body: untyped) {.dirty.}

  Evaluates `body` if `(NimMajor, NimMinor, NimPatch)` is greater than or equal to `version`. Usage:

      proc fun*() {.since: (1, 3, 1).}
      since (1, 3, 1): fun()

  Source Edit