Skip to content
This repository has been archived by the owner on Mar 6, 2023. It is now read-only.

Latest commit

 

History

History
54 lines (29 loc) · 1.59 KB

note-issues.rst

File metadata and controls

54 lines (29 loc) · 1.59 KB

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 call realpath(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!