I just tagged and uploaded to the IF Archive my latest release of the Inform6 development package for Unix machines. This release contains the Inform6 compiler version 6.35, the Standard Library version 6.12.5, and PunyInform 2.6. I decided to add PunyInform because of its growing popularity in combination with running games on old hardware. This required quite a bit of reworking of the installation process.
To compile something using PunyInform, simply type punyinform instead of inform. For example:
There has been some irritating oversights, so I’ve asked the IF Archive curators to delete my uploads. The Library is definitively fixed. There’s one remaining weird problem with detecting case-insensitive filesystems.
Last time I checked, Linux is not case-insensitive… what is the case-sensitive *nix system whose caused the problem ? (wondering how there’s a case-insensitive *nix… around)
mmmm… (doing a quick grep) Indeed there’s various mixed-case 8 letter, or less filenames, some even with .INF (all uppercase) extension, in my if/src/inf6 (basically a mirror of ifarchive’s games/source/inform)
That those files’s case can collide with their relevant #include in their main files is indeed a concrete serious issue, more so for an historian like me.
The earliest Unix clone I worked with was Coherent by Mark Williams Co. in the early 90s. It had case sensitive file system even though it was designed for 386/486 processors.
Is this problem due to incorporating Punyinform?
I mistyped. I meant to say that even that pre-linux Unix clone was case sensitive. (senior moment )
The main problem with case in the package is that many Inform6 sources expect capitalized library files. To deal with this, I have symlinks of capitalized and camelcased names back to the original files. This has been done before I took over the package.
If you’re on a case insensitive filesystem and do these symlinks, you end up with symlinks pointing to themselves. The expected contents are gone. So I devised a test to see if such corruption would happen. If so, the symlinks are not added.
This chiefly affects macOS. PunyInform’s files are all lowercased from the beginning, so it is not affected.
How hard is it to make the compiler try a case insesnitive file match when a file is not found? A quick search points to https://github.com/OneSadCookie/fcaseopen which seems like a possible solution.
That wouldn’t work either because I need something to run in a Unix shell that determines if the filesystem is case-sensitive or not. What I did is touch two files: ctesta and ctestA. Then I do ls ctest?. If this is a case-sensitive filesystem, two files should be shown. If not, just one file.
The problems that prompted me to delay release are now fixed. Right now, you can get the package at https://661.org/proj/if/. Eventually it will appear at the IF Archive.