-
Notifications
You must be signed in to change notification settings - Fork 5
/
CHANGELOG
73 lines (45 loc) · 2.37 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
This file lists breaking changes and major features (not each individual bug fix)
## 0.9.x:
- Drop support for python 2
## 0.8.x:
- Overhaul of path and symlink code to iron out a number of edge case bugs,
particularly in cases where `abspath(normpath(p)) != abspath(p)`.
- Changed `cwd` for indirect (Gupfile) build scripts. Now all buildscripts
are executed from the location of the `Gupfile` (without the `gup/`
component), not the buildscript. The description in the README was ambiguous
as to how this worked, so I chose to resolve this in favour of the approach that
is easier to both implement and explain.
## 0.7.x:
- Warn (instead of failing) when actions like `--always` are used outside of a target
- Support `!exe` in Gupfile, to use `exe` from `$PATH`
- Add `gup-git-tree-builder`
## 0.6.x:
- Add `--keep-failed` flag
- Warn when removing stale target
- Add `--leave` and `--dirty`
- Move suffix -> prefix (see #11 for rationale)
## 0.5.x:
Improvements dealing with symbolic links
## 0.4.x:
- Breaking change: delete "$2" if it hasn't been `touched`, even if it's a
directory.
- treat `#!/path/to/env foo` as `#!foo` if `/path/to/env` doesn't exist.
## 0.3.x:
- Replaced default jobserver implementation (anonymous pipe) with a named pipe,
whose path is passed to children in $GUP_JOBSERVER.
The previous make-compatible implementation has issues with many modern languages,
which automatically close all open file descriptors on `exec` that the programmer
doesn't explicitly declare as being shared. This is enforced in nodejs and go,
and is likely to become the default behaviour in a future version of python.
`gup` will still use a make-supplied jobserver if it's present (in $MAKEFLAGS),
but you'll have to invoke `gup` from `make` for that to be the case.
- Uncovered, added tests for and fixed a number of issues in gup's jobserver
implementation:
- toplevel `gup` instance doesn't wait for children to finish if one fails
- ocaml implementation used an unbounded number of concurrent jobs, regardless
of what --jobs` is set to
- ocaml implementation fell afoul of `flock()`s insane behaviour: builds
lose their WriteLock before they even call the build script because to a
ReadLock on an unrelated file descriptor (for the same inode) is released.
This caused invalid (partially truncated) .deps files to be written in many
parallel builds.