Known Issues
Here’s a list of issues I know about with the codebase:
IP addresses are very basic
See Python’s ipaddress module for what they would ideally be like.
IPv6 parser doesn’t support IPv4 addresses
Several path functions do explicit checks instead of trying and failing.
This is both slower, and (potentially) riskier.
No pure-Kotlin path resolving
Basically means that every
toAbsolutePath()
has to callrealpath(3)
underneath
No buffer operations for datagrams
Not really optimised for performance
Allocations have tried to be kept to a minimum, but this isn’t always achievable unfortunately
ByteString’s are copied in several places, e.g. if reading is too small
Some methods like
ByteString.split
are particularly ripe for improvement
If you are stupid and do fork-exec file descriptors will be copied (no O_CLOEXC yet)
Win32 support:
Win32 path methods will do a LOT of system calls
Thank its weird concept of symbolic links for this.
Linux doesn’t have this issue because symlinks can always be treated as just files, and it has realpath() to do the symlink shenanigans for us.
I think some can be reduced, at least, by merging some checks…
No overlapped support on files. (Yet!)
File handles require a new allocation due to an
expect/actual
bug.
Several interfaces are missing convenient default values.
This is ALSO a Kotlin bug!