Comments (7)
from julia-buildbot.
I think this is a good idea, but I would generally differentiate between CI/CD and release builds. For CI/CD since it sometimes is hard to understand why a issue occurred having assertions is very valuable and the performance cost is ok. On the other hand for official releases we shouldn't enable asserts. I would even go further and say that for CI/CD we only should have asserts builds, with downstream CI pulling those assert builds.
So we should only have two builds for [release] and a single assert build for nightly, and Travis should not get a choice and use the assert builds throughout.
cc: @vtjnash
from julia-buildbot.
from julia-buildbot.
I do all my performance testing on the ASSERT configuration. Also asserts slow down the runtime and the compiler but not generated code.
from julia-buildbot.
So perhaps what we should do is build two of both, use assert versions for all Travis/Appveyor type things, and then link to the nonassert versions from the main JuliaLang downloads page; so that things downloaded by a human tend to be fast to compile, but anything automated is properly checked. I can imagine people being upset that the version they download from the web is (measurably) slower than what they get by building from source due to assertions.
from julia-buildbot.
While I'm generally supportive of having multiple builds available, I'm a bit skeptical of having package CI running a different Julia binary than an average user would download and use locally. I think release builds with assertions enabled on CI should be opt-in, with assertions enabled for nightly. We can make clear on the downloads page that nightly builds have slightly different settings than releases so that users have a better idea of what they're getting and what to expect.
For reference, FreeBSD's master/nightly builds has a lot of debugging information enabled by default and they document that it will be slow because of this, and that you have to build it yourself with specific options to disable the things that make it slow. (That's what I do on my desktop partition.) That seems like a good model to follow for us.
So I'd suggest:
- Release builds have no assertions. CI will use these by default.
- We have alternate release versions with assertions. CI can opt into using these.
- Nightlies always have assertions.
While having multiple builds for each release version kind of sucks, I'd be interested to see what the difference is between having multiple binaries and the days when our binaries included a full debug build in terms of file size/storage cost.
from julia-buildbot.
Closed by #111
from julia-buildbot.
Related Issues (20)
- Don't build every PR twice
- Add docbuild test HOT 3
- Add buildbot for clangsa HOT 2
- Switch over to mono's signcode for windows buildbots HOT 1
- The analyzegc buildbot doesn't analyze the merge commit HOT 11
- run a local httpbin.org? HOT 2
- permission error killing many builds (macos) HOT 2
- dns error is killing many builds (openstack) HOT 1
- codesign segfault? HOT 6
- Set mcpu instead of march on ARM HOT 1
- Upload tar.gz and zip for nightlies HOT 4
- Add runs using `csh` as shell HOT 1
- Build and host a nightly full source tarball HOT 3
- Upload coverage reports even if some CI checks fail HOT 4
- Nightly Windows Binaries are not signed HOT 5
- More fully kill running processes on timeout HOT 2
- Update timestamp server HOT 2
- Options for signing julia exe
- Code coverage: checkout the source code for the relevant commit? HOT 8
- When constructing the `OldBuildCanceller`, construct the list of builder names programmatically HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from julia-buildbot.