Skip to content

Releases: posit-dev/air

0.9.0

31 Mar 11:58

Choose a tag to compare

Release Notes

  • New --stdin-file-path <path> to read from stdin. Read more about this on the website (#471).

  • Air's behavior relating to directly supplied files and the exclude / default-exclude options has changed to be safer by default. Previously, air format cpp11.R would format cpp11.R, even though it was part of the set of default-excludes, because we assumed that a direct request from a user like this could override these rules. However, tools such as pre-commit or IDEs that format via stdin will blindly call air format on any file that changes and have no knowledge of whether that file should be excluded or not. For this reason, we now exclude files that match exclude or default-exclude patterns even if they are directly supplied on the command line.

    Similarly, air format my.qmd no longer attempts to format my.qmd. This file is not excluded by exclude or default-exclude, but is also not included by our internal set of default-includes, which currently only accept .R and .r files. Rather than blindly trying to format this directly supplied file, Air now ignores it (#476).

  • New --force flag to bypass all exclusion and inclusion rules and force a file or folder to be formatted. This flag applies recursively, meaning that all files within a forced folder will also be forcibly formatted, regardless of file type. This flag should rarely be needed, but serves as an escape hatch for cases like air format r-code.txt --force, which is no longer automatically formatted by Air as of this release due to the change mentioned above (#478).

  • New air generate-shell-completion <SHELL> hidden command that emits a script to stdout that generates shell completions. Supports bash, zsh, fish, powershell, and elvish (#477, @salim-b).

    For zsh, run the following to add to your .zshrc:

    echo 'eval "$(air generate-shell-completion zsh)"' >> ~/.zshrc

    For powershell, run the following to add to your profile:

    if (!(Test-Path -Path $PROFILE)) {
      New-Item -ItemType File -Path $PROFILE -Force
    }
    Add-Content -Path $PROFILE -Value '(& air generate-shell-completion powershell) | Out-String | Invoke-Expression'

    Then restart your shell and type air <tab> to see completions.

Install air 0.9.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/posit-dev/air/releases/download/0.9.0/air-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/posit-dev/air/releases/download/0.9.0/air-installer.ps1 | iex"

Download air 0.9.0

File Platform Checksum
air-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
air-x86_64-apple-darwin.tar.gz Intel macOS checksum
air-aarch64-pc-windows-msvc.zip ARM64 Windows checksum
air-x86_64-pc-windows-msvc.zip x64 Windows checksum
air-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
air-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum

0.8.2

27 Feb 20:29

Choose a tag to compare

Release Notes

  • Air is now distributed on PyPI as air-formatter (#467).

    This allows air to be invoked via uv:

    # Global install of `air`
    uv tool install air-formatter
    air format .
    
    # One-off run
    uvx --from air-formatter air format .
  • Air is now code-signed on Windows (#461).

Install air 0.8.2

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/posit-dev/air/releases/download/0.8.2/air-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/posit-dev/air/releases/download/0.8.2/air-installer.ps1 | iex"

Download air 0.8.2

File Platform Checksum
air-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
air-x86_64-apple-darwin.tar.gz Intel macOS checksum
air-aarch64-pc-windows-msvc.zip ARM64 Windows checksum
air-x86_64-pc-windows-msvc.zip x64 Windows checksum
air-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
air-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum

0.8.1

21 Jan 14:28

Choose a tag to compare

Release Notes

  • Added color to Air's terminal help. Disable by setting the environment variable NO_COLOR=1 (#447, @etiennebacher).

  • Fixed an issue with Unicode elements and table alignment (#449).

Install air 0.8.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/posit-dev/air/releases/download/0.8.1/air-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/posit-dev/air/releases/download/0.8.1/air-installer.ps1 | iex"

Download air 0.8.1

File Platform Checksum
air-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
air-x86_64-apple-darwin.tar.gz Intel macOS checksum
air-aarch64-pc-windows-msvc.zip ARM64 Windows checksum
air-x86_64-pc-windows-msvc.zip x64 Windows checksum
air-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
air-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum

0.8.0

21 Oct 08:39

Choose a tag to compare

Release Notes

  • Added support for table formatting of tribble() and fcase() calls (#113).
    You can also opt into table formatting for any other call with the # fmt: table comment directive, or the table TOML option. See also the default-table option to turn off Air's defaults for tribble() and fcase().

    Note: This feature is experimental. We'd be grateful for any feedback!

  • Formulas are now treated like assignment operators rather than like comparison operators, which means they now left-align expression chains on the right-hand side of the formula, respect persistent line breaks, and never automatically break around the ~ operator itself (#336, #402).

    With model formulas:

    # Before:
    y ~
      year +
        age +
        size
    
    # After:
    y ~
      year +
      age +
      size

    With complex case_when() calls:

    # Before:
    case_when(
      x %in% c(1, 2) ~
        {
          this + complex + thing
        },
      x %in% c(3, 4) ~
        {
          that + thing
        }
    )
    
    # After:
    case_when(
      x %in% c(1, 2) ~ {
        this + complex + thing
      },
      x %in% c(3, 4) ~ {
        that + thing
      }
    )

Install air 0.8.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/posit-dev/air/releases/download/0.8.0/air-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/posit-dev/air/releases/download/0.8.0/air-installer.ps1 | iex"

Download air 0.8.0

File Platform Checksum
air-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
air-x86_64-apple-darwin.tar.gz Intel macOS checksum
air-aarch64-pc-windows-msvc.zip ARM64 Windows checksum
air-x86_64-pc-windows-msvc.zip x64 Windows checksum
air-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
air-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum

0.7.1

05 Aug 17:14

Choose a tag to compare

Release Notes

Install air 0.7.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/posit-dev/air/releases/download/0.7.1/air-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/posit-dev/air/releases/download/0.7.1/air-installer.ps1 | iex"

Download air 0.7.1

File Platform Checksum
air-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
air-x86_64-apple-darwin.tar.gz Intel macOS checksum
air-aarch64-pc-windows-msvc.zip ARM64 Windows checksum
air-x86_64-pc-windows-msvc.zip x64 Windows checksum
air-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
air-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum

0.7.0

06 Jun 16:36

Choose a tag to compare

Release Notes

  • Autobracing is a new feature applied to if statements, for loops, while loops, repeat loops, and function definitions. This feature will automatically add {} around the body of these code elements in certain cases to maximize readability, consistency, and portability (#225, #334).

    For example:

    if (condition)
      a
    
    # Becomes:
    if (condition) {
      a
    }
    fn <- function(
      a, b
    ) a + b
    
    # Becomes:
    fn <- function(
      a,
      b
    ) {
      a + b
    }

    Single line if statements and function definitions are still allowed in certain contexts:

    list(a = if (is.null(x)) NA else x)
    
    map(xs, function(x) x + 1)
  • Empty {} are no longer ever expanded (#43).

    This allows for syntax like:

    dummy <- function() {}
    
    while (waiting()) {}
    
    switch(x, a = {}, b = 2)
    
    function(
      expr = {}
    ) {
      this_first()
      expr
    }
  • Binary exponents are now supported in hexadecimal constants (#357).

  • NULL is now allowed in function call argument name position (#357).

  • Fixed a case where some valid raw strings would cause a parse error (#255).

Install air 0.7.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/posit-dev/air/releases/download/0.7.0/air-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/posit-dev/air/releases/download/0.7.0/air-installer.ps1 | iex"

Download air 0.7.0

File Platform Checksum
air-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
air-x86_64-apple-darwin.tar.gz Intel macOS checksum
air-aarch64-pc-windows-msvc.zip ARM64 Windows checksum
air-x86_64-pc-windows-msvc.zip x64 Windows checksum
air-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
air-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum

0.6.0

19 May 14:39

Choose a tag to compare

Release Notes

  • Added documentation on using Air's GitHub Action, setup-air.

  • Added documentation on using Air in Zed.

Install air 0.6.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/posit-dev/air/releases/download/0.6.0/air-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/posit-dev/air/releases/download/0.6.0/air-installer.ps1 | iex"

Download air 0.6.0

File Platform Checksum
air-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
air-x86_64-apple-darwin.tar.gz Intel macOS checksum
air-aarch64-pc-windows-msvc.zip ARM64 Windows checksum
air-x86_64-pc-windows-msvc.zip x64 Windows checksum
air-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
air-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum

0.5.0

09 Apr 18:30

Choose a tag to compare

Release Notes

  • Added support for a skip field in air.toml (#273).

    This is an extension of the # fmt: skip comment feature that provides a single place for you to list functions you never want formatting for. For example:

    skip = ["tribble", "graph_from_literal"]

    This skip configuration would skip formatting for these function calls, even without a # fmt: skip comment:

    tribble(
      ~x, ~y,
       1,  2,
       3,  4
    )
    
    igraph::graph_from_literal(A +-+ B +---+ C ++ D + E)

    We expect this to be useful when working with packages that provide domain specific languages that come with their own unique formatting conventions.

  • Fixed an issue where air.toml settings were not being applied to the correct R files (#294).

Install air 0.5.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/posit-dev/air/releases/download/0.5.0/air-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/posit-dev/air/releases/download/0.5.0/air-installer.ps1 | iex"

Download air 0.5.0

File Platform Checksum
air-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
air-x86_64-apple-darwin.tar.gz Intel macOS checksum
air-aarch64-pc-windows-msvc.zip ARM64 Windows checksum
air-x86_64-pc-windows-msvc.zip x64 Windows checksum
air-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
air-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum

0.4.1

26 Feb 15:57

Choose a tag to compare

Release Notes

  • Language server configuration variables are now fully optional, avoiding issues in editors like Zed or Helix (#246).

Install air 0.4.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/posit-dev/air/releases/download/0.4.1/air-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/posit-dev/air/releases/download/0.4.1/air-installer.ps1 | iex"

Download air 0.4.1

File Platform Checksum
air-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
air-x86_64-apple-darwin.tar.gz Intel macOS checksum
air-aarch64-pc-windows-msvc.zip ARM64 Windows checksum
air-x86_64-pc-windows-msvc.zip x64 Windows checksum
air-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
air-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum

0.4.0

21 Feb 14:41

Choose a tag to compare

Release Notes

  • Parenthesized expressions now tightly hug (#248).

  • We now allow up to 2 lines between top-level elements of a file. This makes it possible to separate long scripts into visually distinct sections (#40).

  • Unary formulas (i.e. anonymous functions) like ~ .x + 1 now add a space between the ~ and the right-hand side, unless the right-hand side is very simple, like ~foo or ~1 (#235).

  • Semicolons at the very start or very end of a file no longer cause the parser to panic (#238).

  • Assigned pipelines no longer double-indent when a persistent line break is used (#220).

  • Hugging calls like:

    list(c(
      1,
      2
    ))

    are no longer fully expanded (#21).

  • Assigned pipelines no longer double-indent (#220).

  • Added support for special "skip" comments.

    Use # fmt: skip to avoid formatting the following node and all of its children. In this case, the tribble() call and all of its arguments (#52).

    # fmt: skip
    tribble(
      ~a, ~b,
       1,  2
    )

    Use # fmt: skip file to avoid formatting an entire file. This comment must appear at the top of the file before any non-comment R code (#219).

Install air 0.4.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/posit-dev/air/releases/download/0.4.0/air-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/posit-dev/air/releases/download/0.4.0/air-installer.ps1 | iex"

Download air 0.4.0

File Platform Checksum
air-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
air-x86_64-apple-darwin.tar.gz Intel macOS checksum
air-aarch64-pc-windows-msvc.zip ARM64 Windows checksum
air-x86_64-pc-windows-msvc.zip x64 Windows checksum
air-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
air-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum