You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Migrations can happen once the filepath, unix and Win32 packages are updated and in sync. A migration would usually involve using the new types from System.AbstractFilePath and the new API variants from unix/Win32.
When writing low-level cross platform code manually (shouldn't generally be necessary), the usual strategy is this:
#if defined(mingw32_HOST_OS) || defined(__MINGW32__)
importqualifiedSystem.AbstractFilePath.Data.ByteString.Short.Word16asSBSimportqualifiedSystem.AbstractFilePath.WindowsasPFP#elseimportqualifiedSystem.AbstractFilePath.Data.ByteString.ShortasSBSimportqualifiedSystem.AbstractFilePath.PosixasPFP#endifcrossPlatformFunction::AbstractFilePath->IO()#if defined(mingw32_HOST_OS) || defined(__MINGW32__)
crossPlatformFunction (OsString pfp@(WS ba)) =do-- use filepath functions for windows specific operating system stringslet ext =PFP.takeExtension pfp
-- operate directly on the underlying bytestring (which is a wide character bytestring, so uses Word16)let foo =SBS.takeWhile...#else
crossPlatformFunction (OsString pfp@(PS ba)) =do-- use filepath functions for posix specific operating system stringslet ext =PFP.takeExtension pfp
-- operate directly on the underlying bytestring (which is just Word8 bytestring)let foo =SBS.takeWhile...#endif
If you have further questions, please let me know. I'm going to write a blog post outlining the affairs and more in-depth intro and migration strategies close after the release. This is a heads up.
Motivation
The next filepath release will add support for a new API, which fixes subtle encoding issues and improves cross platform code and memory residence.
You can read about the state of the newly added API here: haskellfoundation/tech-proposals#35
Release candidate with haddock is here: https://hackage.haskell.org/package/filepath-2.0.0.3/candidate
Demonstration about unsoundness of base with exotic encodings and how the new API fixes them is here: https://gist.github.com/hasufell/c600d318bdbe010a7841cc351c835f92
Migrations
Migrations can happen once the
filepath
,unix
andWin32
packages are updated and in sync. A migration would usually involve using the new types from System.AbstractFilePath and the new API variants from unix/Win32.When writing low-level cross platform code manually (shouldn't generally be necessary), the usual strategy is this:
Platform specific code can be written using
PosixFilePath
/WindowsFilePath
types.If you have further questions, please let me know. I'm going to write a blog post outlining the affairs and more in-depth intro and migration strategies close after the release. This is a heads up.
Related PR: #136
The text was updated successfully, but these errors were encountered: