Skip to content

internal/filepathlite: depends on io/fs which is not _lite_ #73455

@dolmen

Description

@dolmen

What did you see happen?

internal/filepathlite imports io/fs which brings many internal dependencies, and so isn't that "lite": io/fs depends in particular on packages time and io which are not directly relevant for filepathlite.

The only use of io/fs is in func Localize which calls fs.ValidPath.

What did you expect to see?

I'm not sure about the "lite" contract here.
But it looks like that moving the implementation of io/fs.ValidPath from io/fs to another internal lite package could make the dependency tree of internal/filepathlite lighter.

Go version

1.25 tip (c893e1c)

Output of go env in your module/workspace:

N/A

What did you do?

$ git rev-parse HEAD
c893e1cf821b06aa0602f7944ce52f0eb28fd7b5
$ go list -deps internal/filepathlite

internal/goarch
unsafe
internal/abi
internal/unsafeheader
internal/cpu
internal/bytealg
internal/byteorder
internal/chacha8rand
internal/coverage/rtcov
internal/godebugs
internal/goexperiment
internal/goos
internal/profilerecord
internal/runtime/atomic
internal/runtime/exithook
internal/asan
internal/msan
internal/race
internal/runtime/math
internal/runtime/sys
internal/runtime/maps
internal/stringslite
internal/trace/tracev2
runtime
internal/reflectlite
errors
internal/oserror
sync/atomic
internal/sync
sync
io
unicode/utf8
path
cmp
iter
math/bits
slices
internal/bisect
internal/godebug
internal/itoa
syscall
time
io/fs
internal/filepathlite
$ go run github.com/KyleBanks/depth/cmd/depth@master -internal internal/filepathlite
internal/filepathlite
  ├ errors
  │ ├ internal/reflectlite
  │ │ ├ internal/abi
  │ │ │ ├ internal/goarch
  │ │ │ └ unsafe
  │ │ ├ internal/goarch
  │ │ ├ internal/unsafeheader
  │ │ │ └ unsafe
  │ │ ├ runtime
  │ │ │ ├ internal/abi
  │ │ │ ├ internal/bytealg
  │ │ │ │ ├ internal/cpu
  │ │ │ │ │ └ unsafe
  │ │ │ │ └ unsafe
  │ │ │ ├ internal/byteorder
  │ │ │ ├ internal/chacha8rand
  │ │ │ │ ├ internal/byteorder
  │ │ │ │ ├ internal/cpu
  │ │ │ │ ├ internal/goarch
  │ │ │ │ └ unsafe
  │ │ │ ├ internal/coverage/rtcov
  │ │ │ │ └ unsafe
  │ │ │ ├ internal/cpu
  │ │ │ ├ internal/goarch
  │ │ │ ├ internal/godebugs
  │ │ │ ├ internal/goexperiment
  │ │ │ ├ internal/goos
  │ │ │ ├ internal/profilerecord
  │ │ │ ├ internal/runtime/atomic
  │ │ │ │ ├ internal/cpu
  │ │ │ │ ├ internal/goarch
  │ │ │ │ └ unsafe
  │ │ │ ├ internal/runtime/exithook
  │ │ │ │ ├ internal/runtime/atomic
  │ │ │ │ └ unsafe
  │ │ │ ├ internal/runtime/maps
  │ │ │ │ ├ internal/abi
  │ │ │ │ ├ internal/asan
  │ │ │ │ │ └ unsafe
  │ │ │ │ ├ internal/goarch
  │ │ │ │ ├ internal/msan
  │ │ │ │ │ └ unsafe
  │ │ │ │ ├ internal/race
  │ │ │ │ │ ├ internal/abi
  │ │ │ │ │ └ unsafe
  │ │ │ │ ├ internal/runtime/math
  │ │ │ │ │ └ internal/goarch
  │ │ │ │ ├ internal/runtime/sys
  │ │ │ │ │ ├ internal/cpu
  │ │ │ │ │ ├ internal/goarch
  │ │ │ │ │ └ internal/goos
  │ │ │ │ └ unsafe
  │ │ │ ├ internal/runtime/math
  │ │ │ ├ internal/runtime/sys
  │ │ │ ├ internal/stringslite
  │ │ │ │ ├ internal/bytealg
  │ │ │ │ └ unsafe
  │ │ │ ├ internal/trace/tracev2
  │ │ │ └ unsafe
  │ │ └ unsafe
  │ └ unsafe
  ├ internal/bytealg
  ├ internal/stringslite
  ├ io/fs
  │ ├ errors
  │ ├ internal/bytealg
  │ ├ internal/oserror
  │ │ └ errors
  │ ├ io
  │ │ ├ errors
  │ │ └ sync
  │ │   ├ internal/race
  │ │   ├ internal/sync
  │ │   │ ├ internal/abi
  │ │   │ ├ internal/goarch
  │ │   │ ├ internal/race
  │ │   │ ├ sync/atomic
  │ │   │ │ └ unsafe
  │ │   │ └ unsafe
  │ │   ├ runtime
  │ │   ├ sync/atomic
  │ │   └ unsafe
  │ ├ path
  │ │ ├ errors
  │ │ ├ internal/bytealg
  │ │ └ unicode/utf8
  │ ├ slices
  │ │ ├ cmp
  │ │ ├ iter
  │ │ │ ├ internal/race
  │ │ │ ├ runtime
  │ │ │ └ unsafe
  │ │ ├ math/bits
  │ │ │ └ unsafe
  │ │ └ unsafe
  │ ├ time
  │ │ ├ errors
  │ │ ├ internal/bytealg
  │ │ ├ internal/godebug
  │ │ │ ├ internal/bisect
  │ │ │ │ ├ runtime
  │ │ │ │ ├ sync
  │ │ │ │ └ sync/atomic
  │ │ │ ├ internal/godebugs
  │ │ │ ├ sync
  │ │ │ ├ sync/atomic
  │ │ │ └ unsafe
  │ │ ├ internal/stringslite
  │ │ ├ math/bits
  │ │ ├ runtime
  │ │ ├ sync
  │ │ ├ syscall
  │ │ │ ├ errors
  │ │ │ ├ internal/abi
  │ │ │ ├ internal/asan
  │ │ │ ├ internal/bytealg
  │ │ │ ├ internal/byteorder
  │ │ │ ├ internal/goarch
  │ │ │ ├ internal/itoa
  │ │ │ ├ internal/msan
  │ │ │ ├ internal/oserror
  │ │ │ ├ internal/race
  │ │ │ ├ runtime
  │ │ │ ├ sync
  │ │ │ ├ sync/atomic
  │ │ │ └ unsafe
  │ │ └ unsafe
  │ └ unicode/utf8
  └ slices
43 dependencies (43 internal, 0 external, 0 testing).

Metadata

Metadata

Assignees

No one assigned

    Labels

    LibraryProposalIssues describing a requested change to the Go standard library or x/ libraries, but not to a tool

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions