Releases: AnarchyTools/atbuild
1.2: Yo dawg, I heard you like package managers
- We now have atbuild packaged for
homebrew
andapt
! Install with your favorite package manager and always be up to date. For more information, see the documentation- As part of this effort, we have two new custom tools, package-deb and package-homebrew.
- This means your packages, too, can be converted to platform native packages FOR FREE!
- This amazing work is made possible by the synergy between two previous features: the atbin universal format and custom tools.
- Add a new task-level setting,
only-platforms
, to restrict a task to a particular platform - Support compression in
packageatbin
, so that your packages look smaller in the mirror - Providing package version information to
shell
andattool
- Fix a strange interaction between
packageatbin
andexecutable-name
1.1: GitHub release titles don't support emojis, but we do
-
Added packageatbin, a new tool to generate atbin binary packages.
- When targeting iOS, we can now build fat binaries, or as we call them these days, "binaries of size".
-
Added
executable-name
to atllbuild, allowing the building of executables with "special" names, likeyour-executable
,your.executable
,your?executable
, and many other questionable choices Chris Lattner has banned as module names.- Fun party game: you can ask your users to prove they're not robots by identifying the "mountain" executable in your build products: 🌁⛰🏔🗻🌋🏞🌉. Make sure to include a "fun" consequence for incorrect guesses.
-
If you are a string parameter looking for a quick exit, atpkg quotes can now be escaped via an escape sequence:
:option "and we would have gotten away with it, too \" if it wasn't for you meddling kids"
-
Assorted fixes to atpm interoperability
1.0: Going Gold
atbuild is a small, configurable, mature, and boring Swift buildsystem.
- It just builds your code. That's it. No bells, whistles, file downloads, or feature creep.
- It is extensible and can be easily customized to work how you want.
- It has no magic. It doesn't guess. It does what you tell it to do.
- It has no opinions. It does not look down on you for writing code "wrong".
- It is used to build many large production projects.
It follows the Anarchy Tools philosophy of simple, unopinionated, hackable tools.
Key atbuild features:
- Builds Swift 2 & Swift 3 projects
- Can even build with Xcode's Swift
- Builds projects for OSX, Linux, and iOS (experimental)
- Can run custom scripts before, after, and during builds
- Customize all compile and link flags
- Powerful imports system for managing dependencies
- Overlays, custom tools, and external scripts allow maximum customization
- Uses the next-generation
swift-llbuild
engine - Extensive documentation
- It's 1.0!
atbuild pairs well with:
- atpm, the Anarchy Tools Package Manager
- xcode-emit which emits Xcode projects from an atbuild configuration
- SublimeAnarchy, the Swift IDE for Sublime Text 3
- Many other AnarchyTools projects!
atbuild 1.0 is the result of many months of hard work from amazing contributors. 17 releases ago, we rallied around a radical idea to Make Buildsystems Boring Again™. We succeeded. Join us and make building your software boring too.
Changes since 0.10.0
- Fixed a bug that prevented usage from working correctly
- Fixed an intermittent Linux segfault when no atpkg is present in the working directory
- ATBUILD_PLATFORM is now exported to shell and custom tools
- No longer warned about atbuild.* overlays having no effect
0.10.0: static FTW
- We now have "true" platform support, eliminating the need for ad-hoc platform-specific overlays. See the
--platform
option in our documentation. - In addition to
osx
andlinux
platforms, we now support iOS, both libraries and executables. What's exactly is an iOS "executable" you ask? Try it and let us know! We will be refining our iOS support in future releases.- This means you can now make a libFoo.a with Swift iOS code, which is a WORLD FIRST 🏆 . Please link responsively.
- Speaking of which, atbuild itself is now statically linked, so we are no longer tied to Swift snapshots! \o/
- This release is, we're pretty sure, the first Linux executable IN HISTORY 🏆 to be statically linked. I'd like to thank the academy, the ELF specification, and @dunkelstern for their heroic efforts and long hours in getting this done.
- Unfortunately I can't thank upstream, who has no time to review the patches, which continue to sit in their queue. Growl.
- I threw up my hands and forked Swift. If you'd like to statically link your own programs, try CaffeinatedSwift. WE HAVE THE TECHNOLOGY.
- Added a "custom tools" pluginish thing to allow you to write custom atbuild tools. See the documentation
- We no longer print atbuild strack traces in common cases that aren't atbuild bugs, like your code failing to compile. (Nice try, but your compile error isn't our bug.)
- Previously, we produced a diagnostic
umbrella-header "synthesized" must be used with the umbrella-header option
which is nonsensical, because "synthesized" is not a valid value forumbrella-header
. That diagnostic has now been replaced with a sensible one. - Previously, using
required-overlays
anywhere in the atpkg caused an error if the required overlay was not provided. This was true even for running "silly" tasks in an atpkg, such asclean
. Now you can do your spring cleaning without specifying any required overlays. - atbuild now no longer depends on corelibs-Foundation. We have our own project, atfoundation which is way cooler, and can be statically linked. Props to @dunkelstern for his amazing work.
- YOU CAN'T TELL US WHAT TO DO ANYMORE, MOM
Unlike some projects, we plan on going stable real soon! Please report bugs in our tracker.
0.9.0: DLL hell
- Support for snapshot swift-DEVELOPMENT-SNAPSHOT-2016-04-12-a
- Dynamic libraries are now supported. atbuild now provides the same DLL hell you're familiar with from other platforms.
- Frameworks for OSX are also supported in a new
packageFramework
tool. - You can now build a project with a different toolchain than
swift-latest
. In particular, we support building with Xcode's toolchain. - We've added a variable expansion syntax, currently only supported for the shell tool.
1/2
We now unbuffer our output which resolves certain kind of interleaving that can occur...- We no longer print
pp /some/random/path
in your output. But if you're sad to see it go, one more for old times' sake:pp /dev/null
2/2
...between build processes when atbuild is used from other tooling. Some of us aren't completely convinced Swift uses the right default here, see SR-1127 if this affects you
Snapshot
Compatibility with swift-DEVELOPMENT-SNAPSHOT-2016-03-24-a
The Swiftening
Updated for snapshot swift-DEVELOPMENT-SNAPSHOT-2016-03-16-a
Release early, release occasionally
- Supporting incremental compiles, because doing the same thing over and over and over again is annoying.
- Supporting incremental compiles, because doing the same thing over and over and over again is annoying.
- Supporting whole-module-optimizaton, for those times when half-module-optimization isn't quite enough.
- No longer printing random 'a's in your build log. But just in case, take a few more:
a
a
a
- Previously, if you didn't supply an executable for XCTestrun, we said
No nil for XCTestRun
. Now we sayNo testExecutable for XCTestRun
because that actually makes sense - We silenced "certain redundant warnings that are probably useless". We promise to be less useless in every release.
Mar 1 snapshot
0.7.3 Bump version to 0.7.3
Feb 25th snapshot
Compatibility with the Feb 25th snapshot: swift-DEVELOPMENT-SNAPSHOT-2016-02-25-a