Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

breaking changes to zig build API and improved caching #2038

Merged
merged 5 commits into from
Mar 9, 2019
Merged

Conversation

andrewrk
Copy link
Member

@andrewrk andrewrk commented Mar 9, 2019

  • in Zig build scripts, getOutputPath() is no longer a valid function
    to call, unless setOutputDir() was used, or within a custom make()
    function. Instead there is more convenient API to use which takes
    advantage of the caching system. Search this commit diff for
    exe.run() for an example.
  • Zig build by default enables caching. All build artifacts will go
    into zig-cache. If you want to access build artifacts in a convenient
    location, it is recommended to add an install step. Otherwise
    you can use the run() API mentioned above to execute programs
    directly from their location in the cache. Closes zig build system: cache build artifacts and detect cache invalidation #330.
    addSystemCommand is available for programs not built with Zig
    build.
  • Please note that Zig does no cache evicting yet. You may have to
    manually delete zig-cache directories periodically to keep disk
    usage down. It's planned for this to be a simple Least Recently
    Used eviction system eventually.
  • --output, --output-lib, and --output-h are removed. Instead,
    use --output-dir which defaults to the current working directory.
    Or take advantage of --cache on, which will print the main output
    path to stdout, and the other artifacts will be in the same directory
    with predictable file names. --disable-gen-h is available when
    one wants to prevent .h file generation.
  • @cImport is always independently cached now. Closes independently cache @cImports and C object files #2015.
    It always writes the generated Zig code to disk which makes debug
    info and compile errors better. No more "TODO: remember C source
    location to display here"
  • Fix .d file parsing. (Fixes the MacOS CI failure)
  • Zig no longer creates "temporary files" other than inside a
    zig-cache directory.

This breaks the CLI API that Godbolt uses. The suggested new invocation
can be found in this commit diff, in the changes to test/cli.zig.

 * in Zig build scripts, getOutputPath() is no longer a valid function
   to call, unless setOutputDir() was used, or within a custom make()
   function. Instead there is more convenient API to use which takes
   advantage of the caching system. Search this commit diff for
   `exe.run()` for an example.
 * Zig build by default enables caching. All build artifacts will go
   into zig-cache. If you want to access build artifacts in a convenient
   location, it is recommended to add an `install` step. Otherwise
   you can use the `run()` API mentioned above to execute programs
   directly from their location in the cache. Closes #330.
   `addSystemCommand` is available for programs not built with Zig
   build.
 * Please note that Zig does no cache evicting yet. You may have to
   manually delete zig-cache directories periodically to keep disk
   usage down. It's planned for this to be a simple Least Recently
   Used eviction system eventually.
 * `--output`, `--output-lib`, and `--output-h` are removed. Instead,
   use `--output-dir` which defaults to the current working directory.
   Or take advantage of `--cache on`, which will print the main output
   path to stdout, and the other artifacts will be in the same directory
   with predictable file names. `--disable-gen-h` is available when
   one wants to prevent .h file generation.
 * `@cImport` is always independently cached now. Closes #2015.
   It always writes the generated Zig code to disk which makes debug
   info and compile errors better. No more "TODO: remember C source
   location to display here"
 * Fix .d file parsing. (Fixes the MacOS CI failure)
 * Zig no longer creates "temporary files" other than inside a
   zig-cache directory.

This breaks the CLI API that Godbolt uses. The suggested new invocation
can be found in this commit diff, in the changes to `test/cli.zig`.
Windows doesn't have rpaths for DLLs so we instead add
search paths to Path environment variable when running
an executable that depends on DLLs built with zig build.
@andrewrk andrewrk merged commit 8624379 into master Mar 9, 2019
@andrewrk andrewrk deleted the caching branch March 9, 2019 06:17
andrewrk referenced this pull request in sjdh02/trOS Mar 9, 2019
sjdh02 pushed a commit to sjdh02/trOS that referenced this pull request Mar 10, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant