[physfs] Impending PhysicsFS 3.0.0...

Jonas Kulla nyocurio at gmail.com
Fri Aug 18 16:54:30 EDT 2017


Hey Ryan, thanks for all the work!

I have a question regarding PHYSFS_enumerate, or rather the callback
signature. How about turning that callback return value into an enum with
names such as "PHYSFS_CONTINUE/STOP/ERROR"?

I'm currently reviewing a pull request that's using the new enumeration
method and tbh. it's kinda hard to keep in mind which return value means
what (and I think the person who created the PR also got it wrong haha).

Just a suggestion~

(I realize I could also just create that enum internally in my project, and
I'll probably do that in the mean time)

Thanks,
Jonas

2017-08-15 14:37 GMT+02:00 Jay Dolan <jay.t.dolan at gmail.com>:

> This is awesome! We've opened an issue to create a feature branch for
> PhysicsFS 3.0.0 support in Quetoo. Looking forward to giving it a spin!
>
> Jay
>
> On Tue, Aug 15, 2017 at 2:52 AM, Ryan C. Gordon <icculus at icculus.org>
> wrote:
>
>>
>> ( This work was funded by my Patreon! If you like me working on things
>> like PhysicsFS and other useful pieces of code, consider throwing some
>> money in the pot: https://patreon.com/icculus )
>>
>> So I knuckled down and pushed hard to get the PhysicsFS development
>> branch where I want it for a major-version release.
>>
>> Now it's ready to go beta!
>>
>> PhysicsFS 2.1.1, which will stabilize into 3.0.0, is ready for you to
>> test. It should be safe for anyone on any official release of PhysicsFS to
>> update: the API has been expanded over time, and functions have been
>> deprecated, but we are still source and binary compatible with programs
>> written against PhysicsFS 1.0.0. In theory, you can drop in a new build and
>> it'll Just Work.
>>
>> Please try the latest in revision control with your apps and games and
>> report issues. A lot of code changed pretty quickly, so it's possible
>> obvious things are broken (and easy to fix), so feedback is _extremely_
>> useful now.
>>
>>
>> WHAT'S NEW:
>>
>> It's hard to quantify everything that changed, because an enormous amount
>> of reworking went on behind the scenes, files got renamed a bunch, etc. If
>> you want _specifics_, pull the latest from Mercurial and run "hg log -b
>> default -r 5cabc31eb563:3396e6dd19fb" to get every commit involved, but
>> I'll summarize the best things here:
>>
>> - PhysicsFS now is super-easy to build. You can usually just drop all the
>> C files into your project and compile it with everything else without any
>> magic configuration step. The CMake file is still there and useful for
>> packaging, etc, but it's 100% optional.
>>
>> - ZIP files can now use the newer zip64 format.
>>
>> - ZIP files may be password-protected. As the PkWare specs specify, each
>> file in the .zip may have a different password, so you call
>> PHYSFS_openRead(a, "file_that_i_want.txt$PASSWORD") to make it work.
>> Note that this is a wildly insecure way to protect your app's data, both in
>> how you'd have to manage passwords and that "traditional" PkWare crypto is
>> not really hardened anyhow. But if you have a basic password-protected
>> archive, PhysicsFS can get into it now!
>>
>> - 7zip support has been rewritten and improved.
>>
>> - ISO9660 archives are now supported.
>>
>> - VDF (Gothic/Gothic2) archives are now supported.
>>
>> - SLB (Independence War) archives are now supported.
>>
>> - Everything behind the scenes now uses an abstract i/o interface
>> (PHYSFS_Io) instead of talking directly to files, and this interface is
>> available to applications. This allows you to mount anything as an archive
>> that you can wrap in a PHYSFS_Io, through the new PHYSFS_mountIo()
>> function. The obvious and most useful implementations are already
>> implemented for you behind the scenes on top of PHYSFS_Io:
>> PHYSFS_mountMemory() to mount an archive that's in a block of RAM, and
>> PHYSFS_mountHandle() to mount from a PHYSFS_File*...that is to say: you now
>> have an interface to do archives inside archives.
>>
>> - The abstract interface that PhysicsFS uses to talk to archives
>> (PHYSFS_Archiver) is now public, so apps can implement their own archivers
>> and register them into the system. If you have a custom archive format for
>> your app, you can plug it into PhysicsFS at runtime without modifying
>> PhysicsFS itself.
>>
>> - There's now a PHYSFS_getPrefDir() to figure out where it is safe to
>> write files on a given platform. This is usually a per-user,
>> per-application space, and should be used instead of PHYSFS_getUserDir().
>> It might report something under ~/Library/Application Support on a Mac,
>> somewhere under AppData for Windows, or ~/.local/share on Linux, etc.
>>
>> - There's now a PHYSFS_unmount() to match 2.0.0's PHYSFS_mount().
>>
>> - There's now a PHYSFS_utf8FromUtf16(), so stop using
>> PHYSFS_utf8FromUcs2().   :)
>>
>> - There's now PHYSFS_utf8stricmp() for case-insensitive UTF-8 string
>> comparison, in case you need to compare filenames.
>>
>> - Enumerating files can now report errors, instead of quietly dropping
>> files when there were problems. Enumeration callbacks can now return
>> results too ("keep going", "stop enumerating, no error I just got what I
>> needed", "something went wrong, stop and return an error to the app").
>>
>> - There is now a PHYSFS_stat() call that returns metadata on a specific
>> file as a whole instead of using PHYSFS_isDirectory(),
>> PHYSFS_getLastModTime(), etc separately).
>>
>> - There's now a PHYSFS_readBytes() function that operates more like Unix
>> read()...the older PHYSFS_read() operates more like ANSI C's fread(), but
>> had undefined behavior if it reads half an object. There is also an
>> equivalent PHYSFS_writeBytes().
>>
>> - Errors are now reported by numeric codes your app can process (there's
>> a function to turn them into human readable strings). Apps can set the
>> per-thread error code now, too, which is useful if you're writing an
>> PHYSFS_Archiver or PHYSFS_Io.
>>
>> - The OS/2 port has Unicode support now.
>>
>> - The Windows port now uses UTF-16 for Unicode instead of UCS-2, and
>> dropped the ANSI fallbacks (so among other hurdles, you'll need to bring
>> your own UNICOWS.DLL if you want Win95 support still).
>>
>> - Lots of improvements, redesigns, bug fixes, corner cases, and
>> optimizations.
>>
>> - There's now a buildbot that makes sure this builds across two dozen
>> different targets on every commit: https://physfs-buildbot.icculu
>> s.org/waterfall
>>
>> - New platforms: iOS, Android, Emscripten, WinRT (UWP, Windows Phone,
>> Windows Store), Win64, QNX, Solaris, Hurd, Debian/kFreeBSD, ArcaOS,
>> probably others.
>>
>> - Dropped platforms: BeOS (Haiku is still supported), Windows CE (Windows
>> Phone is supported), Windows 95/98/ME (WinXP and later are supported) MacOS
>> Classic (macOS and iOS are supported). Even these might work with minor
>> patches if there's an urgent demand.
>>
>> - Probably many other things.
>>
>> That's all: please enjoy! And please test and report back!
>>
>> Thanks,
>> --ryan.
>>
>> _______________________________________________
>> physfs mailing list
>> physfs at icculus.org
>> http://icculus.org/mailman/listinfo/physfs
>
>
>
>
> --
> Jay Dolan
> 508-415-1866 <(508)%20415-1866>
>
> _______________________________________________
> physfs mailing list
> physfs at icculus.org
> http://icculus.org/mailman/listinfo/physfs
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://icculus.org/pipermail/physfs/attachments/20170818/2cb574ab/attachment.html>


More information about the physfs mailing list