Revision 32c7367960582609e568143280a1df2e623c8e91 authored by Keno Fischer on 21 September 2023, 11:31:39 UTC, committed by Keno Fischer on 21 September 2023, 11:49:50 UTC
Following the discussion in #50974, it became clear that there is significant objection to changes to the behavior of the julia CLI driver. Some commenters found changes to the behavior acceptable if they were unlikely to impact existing code (e.g. in the case of #50974 using `__main__` instead of `main`), while other were worried about the reputational risks of even changing behavior in the corner case. In subsequent discussion it became relatively clear that the only way forward that did not raise significant objection was to introduce a new CLI driver for the new behavior. This may seem a bit drastic just for the change in #50974, but I actually think there's a number of other quality-of-life improvements that this would enable us to do over time, for example: - Autoloading/caching of all packages in the manifest - auto-selection of julia versions (integrate juliaup?) In addition, it doesn't seem so bad to have some CLI design flexibility to make sure that the `juliac` driver is aligned with what we need. This PR is the minimal infrastructure to add the new drivers. In particular, it does the following: 1. Adds two new cli drivers, `juliax` and `juliac`. At the moment, `juliac` is a placeholder and just errors, while `juliax` behaves the same as `julia` (except to error on the deprecated `--math-mode=fast`, just as an example of a behavior difference). 2. Documents that the behavior of `julia` (but not `juliax` or `juliac`) is pat of the julia public API. 3. Switches the cli mode based on the argv[0] of the binary. I.e. all three binaries are identical, except for their name, the same way that, e.g. `clang` and `clang++` are the same binary just with different names. On Unix systems, these are symlinks. On windows, separate copies of the same (small) binary. There is a fallback cli option `--cli-mode` that can be used in case the argv[0] detection is not available (e.g. for some fringe embedded use cases). 4. There is currently no separate `-debug` version of the new drivres. My intention is to make this dependent on the ordinary debug flags, rather than having a separate driver. Once this is merged, I intend to resubmit #50974 (chaning `juliax` only), and then finish and hook up `juliac` shortly thereafter.
1 parent 85c96b9
File | Mode | Size |
---|---|---|
TestPkg | ||
clangsa | ||
compiler | ||
depot | ||
embedding | ||
gc | ||
gcext | ||
llvmpasses | ||
manifest | ||
netload | ||
project | ||
strings | ||
testhelpers | ||
unicode | ||
.gitignore | -rw-r--r-- | 47 bytes |
Makefile | -rw-r--r-- | 1.7 KB |
abstractarray.jl | -rw-r--r-- | 71.7 KB |
ambiguous.jl | -rw-r--r-- | 16.6 KB |
arrayops.jl | -rw-r--r-- | 105.3 KB |
asyncmap.jl | -rw-r--r-- | 2.4 KB |
atexit.jl | -rw-r--r-- | 10.4 KB |
atomics.jl | -rw-r--r-- | 22.9 KB |
backtrace.jl | -rw-r--r-- | 9.1 KB |
binaryplatforms.jl | -rw-r--r-- | 21.0 KB |
bitarray.jl | -rw-r--r-- | 70.6 KB |
bitset.jl | -rw-r--r-- | 10.7 KB |
boundscheck.jl | -rw-r--r-- | 814 bytes |
boundscheck_exec.jl | -rw-r--r-- | 7.2 KB |
broadcast.jl | -rw-r--r-- | 42.6 KB |
cartesian.jl | -rw-r--r-- | 19.3 KB |
ccall.jl | -rw-r--r-- | 64.3 KB |
channel_threadpool.jl | -rw-r--r-- | 613 bytes |
channels.jl | -rw-r--r-- | 18.2 KB |
char.jl | -rw-r--r-- | 11.2 KB |
checked.jl | -rw-r--r-- | 16.9 KB |
choosetests.jl | -rw-r--r-- | 9.9 KB |
client.jl | -rw-r--r-- | 1.5 KB |
cmdlineargs.jl | -rw-r--r-- | 40.2 KB |
combinatorics.jl | -rw-r--r-- | 5.0 KB |
complex.jl | -rw-r--r-- | 55.0 KB |
copy.jl | -rw-r--r-- | 7.5 KB |
core.jl | -rw-r--r-- | 211.0 KB |
corelogging.jl | -rw-r--r-- | 15.2 KB |
deprecation_exec.jl | -rw-r--r-- | 6.2 KB |
dict.jl | -rw-r--r-- | 47.1 KB |
docs.jl | -rw-r--r-- | 32.0 KB |
download.jl | -rw-r--r-- | 262 bytes |
download_exec.jl | -rw-r--r-- | 1.0 KB |
enums.jl | -rw-r--r-- | 7.9 KB |
env.jl | -rw-r--r-- | 5.0 KB |
error.jl | -rw-r--r-- | 3.8 KB |
errorshow.jl | -rw-r--r-- | 40.8 KB |
euler.jl | -rw-r--r-- | 16.9 KB |
exceptions.jl | -rw-r--r-- | 10.8 KB |
fastmath.jl | -rw-r--r-- | 10.6 KB |
file.jl | -rw-r--r-- | 60.6 KB |
filesystem.jl | -rw-r--r-- | 1.2 KB |
float16.jl | -rw-r--r-- | 7.5 KB |
floatapprox.jl | -rw-r--r-- | 2.3 KB |
floatfuncs.jl | -rw-r--r-- | 10.5 KB |
functional.jl | -rw-r--r-- | 7.6 KB |
gc.jl | -rw-r--r-- | 981 bytes |
generic_map_tests.jl | -rw-r--r-- | 4.0 KB |
gmp.jl | -rw-r--r-- | 23.4 KB |
goto.jl | -rw-r--r-- | 3.1 KB |
hashing.jl | -rw-r--r-- | 10.1 KB |
int.jl | -rw-r--r-- | 15.5 KB |
interpreter.jl | -rw-r--r-- | 919 bytes |
intfuncs.jl | -rw-r--r-- | 22.2 KB |
intrinsics.jl | -rw-r--r-- | 20.2 KB |
iobuffer.jl | -rw-r--r-- | 10.4 KB |
iostream.jl | -rw-r--r-- | 5.1 KB |
iterators.jl | -rw-r--r-- | 34.8 KB |
keywordargs.jl | -rw-r--r-- | 11.3 KB |
llvmcall.jl | -rw-r--r-- | 8.7 KB |
llvmcall2.jl | -rw-r--r-- | 3.1 KB |
loading.jl | -rw-r--r-- | 41.9 KB |
math.jl | -rw-r--r-- | 62.0 KB |
meta.jl | -rw-r--r-- | 8.1 KB |
misc.jl | -rw-r--r-- | 42.3 KB |
missing.jl | -rw-r--r-- | 25.1 KB |
mod2pi.jl | -rw-r--r-- | 12.8 KB |
mpfr.jl | -rw-r--r-- | 35.9 KB |
namedtuple.jl | -rw-r--r-- | 15.6 KB |
numbers.jl | -rw-r--r-- | 117.4 KB |
offsetarray.jl | -rw-r--r-- | 29.9 KB |
opaque_closure.jl | -rw-r--r-- | 10.6 KB |
operators.jl | -rw-r--r-- | 11.7 KB |
ordering.jl | -rw-r--r-- | 1.6 KB |
osutils.jl | -rw-r--r-- | 2.6 KB |
parse.jl | -rw-r--r-- | 12.9 KB |
path.jl | -rw-r--r-- | 17.4 KB |
precompile.jl | -rw-r--r-- | 63.6 KB |
print_process_affinity.jl | -rw-r--r-- | 896 bytes |
profile_spawnmany_exec.jl | -rw-r--r-- | 300 bytes |
ranges.jl | -rw-r--r-- | 96.6 KB |
rational.jl | -rw-r--r-- | 31.7 KB |
read.jl | -rw-r--r-- | 22.9 KB |
reduce.jl | -rw-r--r-- | 26.3 KB |
reducedim.jl | -rw-r--r-- | 31.0 KB |
reflection.jl | -rw-r--r-- | 35.5 KB |
regex.jl | -rw-r--r-- | 12.0 KB |
reinterpretarray.jl | -rw-r--r-- | 21.5 KB |
rounding.jl | -rw-r--r-- | 17.0 KB |
runtests.jl | -rw-r--r-- | 17.8 KB |
ryu.jl | -rw-r--r-- | 39.2 KB |
scopedvalues.jl | -rw-r--r-- | 2.9 KB |
secretbuffer.jl | -rw-r--r-- | 4.1 KB |
sets.jl | -rw-r--r-- | 31.8 KB |
show.jl | -rw-r--r-- | 98.7 KB |
simdloop.jl | -rw-r--r-- | 4.5 KB |
smallarrayshrink.jl | -rw-r--r-- | 1.4 KB |
some.jl | -rw-r--r-- | 4.3 KB |
sorting.jl | -rw-r--r-- | 45.7 KB |
spawn.jl | -rw-r--r-- | 34.5 KB |
specificity.jl | -rw-r--r-- | 12.7 KB |
stack_overflow.jl | -rw-r--r-- | 1.0 KB |
stacktraces.jl | -rw-r--r-- | 9.0 KB |
staged.jl | -rw-r--r-- | 9.4 KB |
stress.jl | -rw-r--r-- | 2.6 KB |
stress_fd_exec.jl | -rw-r--r-- | 675 bytes |
subarray.jl | -rw-r--r-- | 25.0 KB |
subtype.jl | -rw-r--r-- | 112.5 KB |
syntax.jl | -rw-r--r-- | 105.0 KB |
sysinfo.jl | -rw-r--r-- | 1.3 KB |
terminfo.jl | -rw-r--r-- | 43.9 KB |
test_exec.jl | -rw-r--r-- | 157 bytes |
test_sourcepath.jl | -rw-r--r-- | 601 bytes |
testdefs.jl | -rw-r--r-- | 4.1 KB |
testenv.jl | -rw-r--r-- | 2.4 KB |
threadpool_latency.jl | -rw-r--r-- | 1.2 KB |
threadpool_use.jl | -rw-r--r-- | 755 bytes |
threads.jl | -rw-r--r-- | 10.6 KB |
threads_exec.jl | -rw-r--r-- | 32.7 KB |
triplequote.jl | -rw-r--r-- | 1.3 KB |
tuple.jl | -rw-r--r-- | 28.6 KB |
vecelement.jl | -rw-r--r-- | 3.4 KB |
version.jl | -rw-r--r-- | 8.8 KB |
worlds.jl | -rw-r--r-- | 15.7 KB |
Computing file changes ...