Inform 6.35 package for Unix released (now with PunyInform)

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:

punyinform mygame.inf

The package should show up at http://ifarchive.org/indexes/if-archive/infocom/compilers/inform6/source/ in a few days.

[edit]

The subsequently mentioned problems are fixed. The package is currently available at https://661.org/proj/if/.

8 Likes

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.

1 Like

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)

Best regards from Italy,
dott. Piergiorgio.

1 Like

Case sensitivity is a filesystem property, so maybe FAT?

1 Like

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.

Best regards from Italy,
dott. Piergiorgio.

2 Likes

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 :frowning: )

I think it’s just a safety precaution. It’s best to assume that the operating system running the compiler is case-sensitive, even if it’s not.

1 Like

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.

1 Like

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.

The test needs to happen in the makefile, not as C code.

There exist crude tricks for this situation, but I’m not sure how effective they would be for a production release build system.

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.

2 Likes

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.

2 Likes

The inform-6.35-r1.tar.gz archive contains an empty “foo” directory. Is that by design or by accident?

an empty directory named “foo” in a tarball is surely an accident…

Best regards from Italy,
dott. Piergiorgio.

It was an accident.