Solvedkotlin native Output files without the .kexe extension

kotlinc-native: 1.1.60-dev-299 (JRE 1.8.0_144-b01)
OS: Linux (Arch)

There doesn't appear to be a way to output a file without the .kexe extension, and the discussion here doesn't shed any light on this "feature". Why was it added, and how can it be disabled?

Linux doesn't identify executables with extensions, and every other compiler with an -o/--output option creates a file with the specified filename.

12 Answers

✔️Accepted Answer

however it seems to be nice feature to have.

Why? It's not even a real extension, and even if it was it would be irrelevant on every platform apart from Windows.

If you dislike it, renaming kexe to anything you like is pretty easy with mv/cp command, or with the build system rule.

mv and cp are not portable, and requiring everyone to use a build tool to work around this forever is boring. Why not just do what every other compiler does and what the documentation says this option does?

-output (-o) <name>        Output name

Other Answers:

Totally agree, IMHO an extension of kexe causes more confusion than anything, I even had odd flashbacks of repackaged wine apps. For windows, I would expect exe, for any other *nix system I would expect the execution bit to be set (and NOT have a file extension)

If anyone really needs this feature, please add it under another option which doesn't break the standard behavior of -o/--output e.g.:

-o/-output hello     # hello
-O/-output-exe hello # hello.exe (on Windows)

On macos.

kotlinc-native -produce program -o csvparser src/main/kotlin/CsvParser.kt

Unexpectedly produces csvparser.kexe

Note that the issue isn't about file extensions in general. Files intended to be edited and opened by certain applications are typically grouped/classified by means of file extensions. The problem is executables with extensions which is generally unneeded, uncommon, and unexpected on unix. Now and then you'll see people add extensions like .sh but extensions mostly just get in the way for people who prefer the command line. Also, the executable bit is proper indicator for executables so using extensions is redundant.

ref: #665

I think it's telling that the Kotlin documentation has to go out of its way to say that the kexe files are in fact native executables:

"The file is the actual binary produced for our target platform"
"It's important to understand that this is now a native application, and no runtime or virtual machine is required"

The first time I used the Kotlin native compiler and got a kexe file as output I thought that I'd done something wrong. And it seems like whoever wrote the documentation realized that it would be confusing.

Related Issues:

kotlin native Output files without the .kexe extension
however it seems to be nice feature to have Why? It's not even a real extension and even if it was i...
kotlin native Platform Libraries are missing on 1.3.60
I have this workaround in my build.gradle: Uncommenting that line makes autocompletion work ...
Pillow ImportError: cannot import name 'PILLOW_VERSION' from 'PIL' (unknown location)
I'm getting the same error right now after conda install pillow on Win 10 It installed pillow 6.2.1 ...
neovim build fails with OSX Mojave
Starting with Mojave the headers are no longer installed under /usr/include/ by default -- look unde...
Pillow zlib requirement on Alpine Linux
@wiredfool Thanks I was having the same problem building a docker image hey ...
vim Error message printed first time python3 (version 3.7.0) dynamic library is imported
Regardless of installed plugins silently execute python3 once on the top of your vimrc: ...
Pillow cannot write mode RGBA as JPEG (4.2.0)
@AymericHENRY Hi While this is just reiterating what has already been said you should have no proble...
Pillow Can't install Pillow on Android
It does the trick: $ pkg install python libjpeg-turbo libcrypt ndk-sysroot clang zlib $ LDFLAGS=-L${...
neovim Build failed with Homebrew on both macOS 11.4 and 12.0.1
This should be fixed in Homebrew for now Neovim version (nvim -v) Upgrading neovim HEAD-487286b -> H...
arrayfire NVCC does not support Apple Clang version 8.x
@joseph-zhong it looks like you're using Xcode 8.3 which CUDA (v8.0.61) does not yet support :( Down...
Win32 OpenSSH Can't add keys to ssh-agent, communication with agent failed
That check in ssh-agent can be removed as sshd now runs as SYSTEM We'll fix it As a workaround to un...
xrdp Problem on debian - black screen
Hi I ran into the same issue on Debian testing and opened a bug on the Debian bug tracking system (D...
neovim Update tree-sitter to v0.19.0
Workaround for homebrew users: Uninstall tree-sitter@0.19.1 ignoring neovim dependency Extract the f...
systemd systemd can't handle the process previlege that belongs to user name startswith number, such as 0day
Let's look if it's actually invalid.. Submission type Bug report systemd version the issue has been ...
vim E363: pattern uses more memory than 'maxmempattern'
Vim 7.4 is getting a little long in the teeth The current state-of-the art Vim is 8.0.1097 as of thi...
borg document pull-like operation
While having documentation for this workaround is great wouldn't it be better to add this functional...
systemd systemctl - Useless error message - "Failed to enable unit: Invalid Argument"
In the mean time I came across a new-to-me command for possibly resolving invalid argument errors: s...
scrcpy adb server version (41) doesn't match this client (40)
fixed this by doing the following: going into GenyMotion settings -> ADB tab instead of Use Genymoti...
Pillow Unable to install on macOS Big Sur (zlib missing)
Run export SYSTEM_VERSION_COMPAT=1 before all other scripts They say Big Sur is both 10.16 and 11.0 ...
vim netrw's "gx" functionality doesn't open URLs anymore in macOS
I found yet another issue with netrw not opening URLs with @ and I decided enough is enough I starte...
vim Can't get transparent background with termguicolors enabled
At this moment this issue is solely about: Since to me the fact of being able to get transparent bac...
vcpkg Remove multiple packages at once (wildcards)
How about allowing syntax .\vcpkg.exe remove *:x86-windows to remove the entire x86-windows triplet?...
scrcpy not working with OS Catalina
I managed to fix this: cd /usr/local/Caskroom/android-platform-tools/29.0.5/platform-tools && open ....
neovim homebrew build fails to start (segfault in libtermkey 0.21)
EDITOR=/usr/bin/vim brew edit libtermkey edit the URL to libtermkey-0.20.tar.gz and the hash to 6c0d...
neovim Feature: optional floating window borders
This works for me Not sure why but it does. #6619 Added floating windows but no way to create a bord...
systemd "Restart" and/or "RestartForceExitStatus" should work with oneshot services, too
oneshot services managing their own restart policy (in a bash retry loop or similar) is similar to s...
kitty Error opening terminal: xterm-kitty
From stackoverflow: export TERM=xterm And it works. Any ideas how to fix this? This is a brand new M...
vim Right click enables visual mode by default
This is by design See :help defaults.vim for detail This happens if you don't have .vimrc ...
vim Editing a Groovy file causes Vim to throw an error - E945: Range too large in character class
At first I could not reproduce it either Describe the bug When I edit a Groovy file Vim throws an er...
neovim Failed to load python host
@brycearden I had that same issue as yours later I found out that pip and pip3 were both aliased to ...
Pillow The headers or library files could not be found for zlib, a required dependency when compiling Pillow from source
I figured it was my pip version that was behind I close the issue as upgrade the pip version fixed i...
vifm How to use bat as a fileviewer
Make sure that your truecolor terminal sets the COLORTERM variable to either truecolor or 24bit Othe...
libvips Install via package managers on Linux?
Amazon Linux 2 seems to be based on RHEL/CentOS 7[1] so I assume you could use Remi's RPM repository...
fluent bit Errors when forwarding to ElasticSearch
@edsiper I've got the same problem also related to es_rejected_execution_exception but: It should st...
systemd Access mounted (ip netns ...) network namespaces.
FWIW I came up with a simpler minimalistic version of @CrackerJackMack's solution above: Then ...
allegro5 Android build fails due to deprecated 'android' command
I have searched and found no replacement for the android update project command ...
neovim Pip already installed neovim but module not found
Try pip uninstalling both neovim and pynvim and then reinstalling just pynvim -- that worked for me ...
xrdp VNC Problem connecting
[SOLVED] I got the same error in CentOS 7.5 with Xfce desktop I had struggled for several days with ...
awesome Intellij dialog windows close immediately
Same problems with PyCharm 2018.1 and Idea 2018.1 Popups are problematic As @p-himik in #2233 said c...
Pillow Unable to install Pillow on the Macbook Pro 13 M1 Silicon
If it helps anyone on Apple Silicon brew install libjpeg pip install Pillow works ! ...
neovim cannot copy unicode characters
I had a similar problem: when copying texts letters with accents were swapped by other characters (e...
radare2 Unable Detect Clang Compiler in MacOS
@SajjadPourali and @ZhangZhuoSJTU are you using binutils from brew (Check with brew list | grep binu...
fluent bit Duplicate @timestamp fields in elasticsearch output
@edsiper I would reopen this I have this config: and keep getting error like this one: ...
lxc Unable to mount squashfs inside unprivileged container (mount failed: Unknown error -1)
For anyone who may be interested in installing Nextcloud via Snap in a Proxmox LXC container the fol...
neovim E886: System error while opening ShaDa file for writing: no such file or directory
I got this error on elementaryOS 5.1 Neovim v0.2.2 nvim --version: v0.4.0-609 Vim (version: ) behave...
conan "Please log in to "conan-center" to perform this action." for several packages
Conan 1.18.5 has been released limiting urllib3 < 1.25.4 To help us debug your issue please explain:...
mpv Better scaletempo (on high speed x1.5-x3)
@TiGR @wiiaboo I've fine tuned the settings a bit and this is what I got I've been watching some tal...
vim [discuss] Popup Window API design.
I have added a detailed design in patch 8.1.1329 Feel free to comment. This is not an issue but I ha...
goaccess Support structured log formats such as JSON
Native JSON support has been added Feel free to build from development to test this out It will be p...
neovim snap package
Snaps have a few features that I don't think you'd get from appimage The neovim developers should co...