Windows Glulxe and Windows Git updated

I’ve made new releases of the Windows Glulxe and Windows Git interpreters, available from here
http://ifarchive.org/indexes/if-archiveXprogrammingXglulxXinterpretersXglulxe.html
http://ifarchive.org/indexes/if-archiveXprogrammingXglulxXinterpretersXgit.html
http://www.davidkinder.co.uk/glulxe.html

The underlying interpreters have not changed: what is new is an update to the Glk implementation, Windows Glk. This brings support for the shiny new Glk 0.7.1 and 0.7.2 features: control over line input echoing and terminator characters; Unicode string decomposition and normalization; and access to the system’s date and time.

One part of Glk 0.7.1 that has not entirely been handled is the new “no window border” flag that can be passed to the Glk function that opens windows. Windows Glk defaults to showing no borders anyway, but if window borders are turned on in the Options dialog, then the above “no window border” flag has no effect. This may be looked at at some point in the future.

I just went to the 3rd link and downloaded the Glulxe installation program, installed it, ran it, and then released, opened & ran the example programs from the Inform 7 extensions that expose the new Glk features… but they don’t work. The gestalt says they aren’t supported, and removing the gestalt check to assume they are anyway still doesn’t work. Has the new version of Glulxe not landed on its server or something?

EDIT to add: I’m on Windows, and did not try Git.

EDIT2: oh, but downloading Glulxe’s Installer from the first link works just fine.

The link from my page is to mirror.ifarchive.org, which will re-direct you to a random IF-Archive mirror - unfortunately some of the mirrors take a bit longer to update than others.

Ah.

And thank you!

By the way, do let me know if you find any oddities with the date/time functionality in Windows Glk. I’ve implemented this in terms of the Windows API, rather than using the Unix/Posix-style functions that Zarf used in CheapGlk and GlkTerm. While this makes the code nice and neat (good) it also means that there’s a chance I’ve made a mistake somewhere (not so good).

It seems to work fine at first blush. For the codeInstead of waiting: repeat with foo running from 1 to 3: while suspending time: say "Seconds & microseconds: [player's seconds]:[player's microseconds]."; say "Your time is [the player's time]."; say "Your date is [player's weekday], [player's month] [player's day], [player's year]."; say "Oh, and your timezone is [the player's timezone]."; say "Seconds & microseconds: [player's seconds]:[player's microseconds]."; say "Seconds & microseconds (after suspension): [player's seconds]:[player's microseconds]."; say line break. I get this (Glulxe)

Which looks correct (at the time I ran it). (This machine is 2.9 GHz, so cycles are measured in nanoseconds, not microseconds.)

Anything specific I should look out for?

No, nothing specific. I’m just aware that Windows Glk is probably the only Glk implementation that won’t copy Zarf’s code verbatim.

Oh, I’ll use the native Cocoa toolkit for the iOS version. Just for the sake of variety.

The unit test, again, is at eblong.com/zarf/glulx/datetimetest.ulx .

Windows Glk seems okay with your unit test, so hopefully it’s right :slight_smile:

Thank you, David. :smiley:

The date/time functions seem to cache values rather than check the clock each time they are called (or there could be a temporal resolution problem–?). Here’s output from a profiling test in the newest WinGit, where I call the date/time functions every few lines or so:

8:26 pm:15:467500: Evaluating walkability.
8:26 pm:15:467500: Walkability evaluated.
8:26 pm:15:467500: Calculating heuristic distance.
8:26 pm:15:467500: Heuristic distance calculated.
8:26 pm:15:467500: Reading next entry from table.
8:26 pm:15:467500: Entry read.
8:26 pm:15:467500: Finding neighbors.
8:26 pm:15:467500: Neighbors found.
8:26 pm:15:467500: Calculating F-score for neighboring.
8:26 pm:15:467500: Calculating heuristic distance.
8:26 pm:15:467500: Heuristic distance calculated.
8:26 pm:15:467500: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:467500: Neighbor added to open list.
8:26 pm:15:467500: Calculating F-score for neighboring.
8:26 pm:15:467500: Calculating heuristic distance.
8:26 pm:15:467500: Heuristic distance calculated.
8:26 pm:15:467500: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:467500: Neighbor added to open list.
8:26 pm:15:467500: Calculating F-score for neighboring.
8:26 pm:15:467500: Calculating heuristic distance.
8:26 pm:15:467500: Heuristic distance calculated.
8:26 pm:15:467500: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:467500: Neighbor added to open list.
8:26 pm:15:467500: Reading next entry from table.
8:26 pm:15:467500: Entry read.
8:26 pm:15:467500: Finding neighbors.
8:26 pm:15:467500: Neighbors found.
8:26 pm:15:467500: Calculating F-score for neighboring.
8:26 pm:15:467500: Calculating heuristic distance.
8:26 pm:15:467500: Heuristic distance calculated.
8:26 pm:15:467500: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:467500: Neighbor added to open list.
8:26 pm:15:467500: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:467500: F-score calculated.
8:26 pm:15:467500: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:467500: F-score calculated.
8:26 pm:15:467500: Reading next entry from table.
8:26 pm:15:467500: Entry read.
8:26 pm:15:467500: Finding neighbors.
8:26 pm:15:467500: Neighbors found.
8:26 pm:15:467500: Calculating F-score for neighboring.
8:26 pm:15:467500: Calculating heuristic distance.
8:26 pm:15:467500: Heuristic distance calculated.
8:26 pm:15:467500: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:467500: Neighbor added to open list.
8:26 pm:15:467500: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:467500: F-score calculated.
8:26 pm:15:467500: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:467500: F-score calculated.
8:26 pm:15:467500: Reading next entry from table.
8:26 pm:15:467500: Entry read.
8:26 pm:15:467500: Finding neighbors.
8:26 pm:15:467500: Neighbors found.
8:26 pm:15:467500: Calculating F-score for neighboring.
8:26 pm:15:467500: Calculating heuristic distance.
8:26 pm:15:467500: Heuristic distance calculated.
8:26 pm:15:467500: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:467500: Neighbor added to open list.
8:26 pm:15:467500: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:467500: F-score calculated.
8:26 pm:15:467500: Calculating F-score for neighboring.
8:26 pm:15:467500: Calculating heuristic distance.
8:26 pm:15:467500: Heuristic distance calculated.
8:26 pm:15:467500: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:467500: Neighbor added to open list.
8:26 pm:15:467500: Calculating F-score for neighboring.
8:26 pm:15:467500: Calculating heuristic distance.
8:26 pm:15:467500: Heuristic distance calculated.
8:26 pm:15:467500: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:467500: Neighbor added to open list.
8:26 pm:15:467500: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:467500: F-score calculated.
8:26 pm:15:467500: Calculating F-score for neighboring.
8:26 pm:15:467500: Calculating heuristic distance.
8:26 pm:15:467500: Heuristic distance calculated.
8:26 pm:15:467500: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:467500: Neighbor added to open list.
8:26 pm:15:467500: Reading next entry from table.
8:26 pm:15:467500: Entry read.
8:26 pm:15:467500: Finding neighbors.
8:26 pm:15:467500: Neighbors found.
8:26 pm:15:467500: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:467500: F-score calculated.
8:26 pm:15:467500: Calculating F-score for neighboring.
8:26 pm:15:467500: Calculating heuristic distance.
8:26 pm:15:467500: Heuristic distance calculated.
8:26 pm:15:467500: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:467500: Neighbor added to open list.
8:26 pm:15:467500: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:467500: F-score calculated.
8:26 pm:15:467500: Reading next entry from table.
8:26 pm:15:467500: Entry read.
8:26 pm:15:467500: Finding neighbors.
8:26 pm:15:467500: Neighbors found.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Reading next entry from table.
8:26 pm:15:483125: Entry read.
8:26 pm:15:483125: Finding neighbors.
8:26 pm:15:483125: Neighbors found.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Reading next entry from table.
8:26 pm:15:483125: Entry read.
8:26 pm:15:483125: Finding neighbors.
8:26 pm:15:483125: Neighbors found.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Reading next entry from table.
8:26 pm:15:483125: Entry read.
8:26 pm:15:483125: Finding neighbors.
8:26 pm:15:483125: Neighbors found.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Reading next entry from table.
8:26 pm:15:483125: Entry read.
8:26 pm:15:483125: Finding neighbors.
8:26 pm:15:483125: Neighbors found.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Reading next entry from table.
8:26 pm:15:483125: Entry read.
8:26 pm:15:483125: Finding neighbors.
8:26 pm:15:483125: Neighbors found.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Reading next entry from table.
8:26 pm:15:483125: Entry read.
8:26 pm:15:483125: Finding neighbors.
8:26 pm:15:483125: Neighbors found.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Reading next entry from table.
8:26 pm:15:483125: Entry read.
8:26 pm:15:483125: Finding neighbors.
8:26 pm:15:483125: Neighbors found.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Reading next entry from table.
8:26 pm:15:483125: Entry read.
8:26 pm:15:483125: Finding neighbors.
8:26 pm:15:483125: Neighbors found.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Reading next entry from table.
8:26 pm:15:483125: Entry read.
8:26 pm:15:483125: Finding neighbors.
8:26 pm:15:483125: Neighbors found.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Reading next entry from table.
8:26 pm:15:483125: Entry read.
8:26 pm:15:483125: Finding neighbors.
8:26 pm:15:483125: Neighbors found.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Reading next entry from table.
8:26 pm:15:483125: Entry read.
8:26 pm:15:483125: Finding neighbors.
8:26 pm:15:483125: Neighbors found.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Reading next entry from table.
8:26 pm:15:483125: Entry read.
8:26 pm:15:483125: Finding neighbors.
8:26 pm:15:483125: Neighbors found.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Reading next entry from table.
8:26 pm:15:483125: Entry read.
8:26 pm:15:483125: Finding neighbors.
8:26 pm:15:483125: Neighbors found.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Reading next entry from table.
8:26 pm:15:483125: Entry read.
8:26 pm:15:483125: Finding neighbors.
8:26 pm:15:483125: Neighbors found.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Reading next entry from table.
8:26 pm:15:483125: Entry read.
8:26 pm:15:483125: Finding neighbors.
8:26 pm:15:483125: Neighbors found.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Reading next entry from table.
8:26 pm:15:483125: Entry read.
8:26 pm:15:483125: Finding neighbors.
8:26 pm:15:483125: Neighbors found.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Reading next entry from table.
8:26 pm:15:483125: Entry read.
8:26 pm:15:483125: Finding neighbors.
8:26 pm:15:483125: Neighbors found.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Reading next entry from table.
8:26 pm:15:483125: Entry read.
8:26 pm:15:483125: Finding neighbors.
8:26 pm:15:483125: Neighbors found.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Reading next entry from table.
8:26 pm:15:483125: Entry read.
8:26 pm:15:483125: Finding neighbors.
8:26 pm:15:483125: Neighbors found.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:483125: F-score calculated.
8:26 pm:15:483125: Calculating F-score for neighboring.
8:26 pm:15:483125: Calculating heuristic distance.
8:26 pm:15:483125: Heuristic distance calculated.
8:26 pm:15:483125: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:483125: Neighbor added to open list.
8:26 pm:15:483125: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:498750: F-score calculated.
8:26 pm:15:498750: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:498750: F-score calculated.
8:26 pm:15:498750: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:498750: F-score calculated.
8:26 pm:15:498750: Reading next entry from table.
8:26 pm:15:498750: Entry read.
8:26 pm:15:498750: Finding neighbors.
8:26 pm:15:498750: Neighbors found.
8:26 pm:15:498750: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:498750: F-score calculated.
8:26 pm:15:498750: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:498750: F-score calculated.
8:26 pm:15:498750: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:498750: F-score calculated.
8:26 pm:15:498750: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:498750: F-score calculated.
8:26 pm:15:498750: Reading next entry from table.
8:26 pm:15:498750: Entry read.
8:26 pm:15:498750: Finding neighbors.
8:26 pm:15:498750: Neighbors found.
8:26 pm:15:498750: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:498750: Calculating heuristic distance.
8:26 pm:15:498750: Heuristic distance calculated.
8:26 pm:15:498750: F-score calculated.
8:26 pm:15:498750: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:498750: F-score calculated.
8:26 pm:15:498750: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:498750: F-score calculated.
8:26 pm:15:498750: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:498750: F-score calculated.
8:26 pm:15:498750: Calculating F-score for neighboring.
8:26 pm:15:498750: Calculating heuristic distance.
8:26 pm:15:498750: Heuristic distance calculated.
8:26 pm:15:498750: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:498750: Neighbor added to open list.
8:26 pm:15:498750: Reading next entry from table.
8:26 pm:15:498750: Entry read.
8:26 pm:15:498750: Finding neighbors.
8:26 pm:15:498750: Neighbors found.
8:26 pm:15:498750: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:498750: F-score calculated.
8:26 pm:15:498750: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:498750: F-score calculated.
8:26 pm:15:498750: Calculating F-score for neighboring.
8:26 pm:15:498750: Calculating heuristic distance.
8:26 pm:15:498750: Heuristic distance calculated.
8:26 pm:15:498750: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:498750: Neighbor added to open list.
8:26 pm:15:498750: Calculating F-score for neighboring.
8:26 pm:15:498750: Calculating heuristic distance.
8:26 pm:15:498750: Heuristic distance calculated.
8:26 pm:15:498750: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:498750: Neighbor added to open list.
8:26 pm:15:498750: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:498750: F-score calculated.
8:26 pm:15:498750: Reading next entry from table.
8:26 pm:15:498750: Entry read.
8:26 pm:15:498750: Finding neighbors.
8:26 pm:15:498750: Neighbors found.
8:26 pm:15:498750: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:498750: F-score calculated.
8:26 pm:15:498750: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:498750: F-score calculated.
8:26 pm:15:498750: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:498750: F-score calculated.
8:26 pm:15:498750: Calculating F-score for neighboring.
8:26 pm:15:498750: Calculating heuristic distance.
8:26 pm:15:498750: Heuristic distance calculated.
8:26 pm:15:498750: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:498750: Neighbor added to open list.
8:26 pm:15:498750: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:498750: F-score calculated.
8:26 pm:15:498750: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:498750: Calculating heuristic distance.
8:26 pm:15:498750: Heuristic distance calculated.
8:26 pm:15:498750: F-score calculated.
8:26 pm:15:498750: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:498750: F-score calculated.
8:26 pm:15:498750: Reading next entry from table.
8:26 pm:15:498750: Entry read.
8:26 pm:15:498750: Finding neighbors.
8:26 pm:15:498750: Neighbors found.
8:26 pm:15:498750: Calculating F-score for neighboring.
8:26 pm:15:498750: Calculating heuristic distance.
8:26 pm:15:498750: Heuristic distance calculated.
8:26 pm:15:498750: F-score for neighboring calculated. Adding neighbor to open list.
8:26 pm:15:498750: Neighbor added to open list.
8:26 pm:15:498750: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:498750: F-score calculated.
8:26 pm:15:498750: Calculating F-score for neighbor that is already in the open list.
8:26 pm:15:498750: F-score calculated.
8:26 pm:15:498750: Reading next entry from table.
8:26 pm:15:498750: Entry read.
8:26 pm:15:498750: Backtracing path.
8:26 pm:15:498750: Path traced.
Path: 53, 64, 55, 46, 37, 28 and 29.

Notice the many repetitions of the same time (down to the microsecond), followed by an unreasonably large “jump” in at 15625 microsecond intervals…

–Erik

Edited to add: I’m doing this under emulation on a MacBook.

I saw that, but noted that on a GHz processor, it does things in nanoseconds, not microseconds and certainly not mere milliseconds. I’m assuming the jump is when the operating system put the program on hold to tend to the other programs running on the computer.

That’s just an educated guess, though.

Quixe always seems to report time with milliseconds rounded to the nearest thousand, presumably because a millisecond is too small to be a reliable measure in a slow web browser?

Hm… but that doesn’t quite explain why the “jump” would happen precisely at intervals of 15625, does it?

Edited to add: Oh, and I’m pretty sure that at least 1 full microsecond is passing–and not being reflected–for at least some of the operations in the code I’m profiling. I could be wrong, though–WinGit and Gargoyle handle the whole thing pretty much instantaneously, whereas Quixe requires a half-second or so.

That might be the reasoning. On the other hand, Chrome seems to be capable of running & printing multiple (at least 3) checks w/in a single millisecond interval–in addition to the calculations I’m trying to measure–so rounding to the millisecond seems to ignore potentially useful information.

–Erik

Because Javascript only provides milliseconds. developer.mozilla.org/en/JavaSc … jects/Date

If the library is relying on the OS these results might be expected. There should be a way to get a higher precision timer than the default OS one though.

msdn.microsoft.com/en-us/windows … 7.aspx#ESB

The internal Windows timer has a 15ms interval, so this isn’t unexpected: Windows internal representation of the current date and time is only accurate to this limit. As Windows Glk just relies on the operating system for the current time, 15ms resolution is the result.

There are ways to address this involving higher performance timers, but that introduces nasty complications of its own: for example, what happens if the current date and time are adjusted to match an external time synchronization source? There’s an article about these sorts of problems here: http://msdn.microsoft.com/en-us/magazine/cc163996.aspx.

Looking at Chrome’s source, I can see that they’ve grappled with these issues and have come up with a reasonably complicated (but presumably stable) way to address this: http://src.chromium.org/svn/trunk/src/base/time_win.cc. At some point I will look into something similar for Windows Glk.

Then it is a resolution issue in both the javascript and WinGlk cases. I’ll wait for a Gargoyle or Zoom update before trying to use this for anything fine-grained.

Thanks everybody!

–Erik

Another set of new releases for the Windows Glulxe and Windows Git interpreters, available from here:
ifarchive.org/indexes/if-archive … lulxe.html
ifarchive.org/indexes/if-archive … sXgit.html
davidkinder.co.uk/glulxe.html

The only change is to bump the Windows Glk version to 1.42. This introduces a high-resolution timer approach to determining the system time, as discussed previously in this thread (following approximately the same approach as used by Mozilla Firefox, for anyone who is interested).

As a result, the microsecond value in the structure filled in by glk_current_time() should be accurate to the nearest few microseconds, depending on operating system version and underlying hardware. (At worst, it’ll be no worse than before, which is accurate to 15.625ms, in the case of no higher resolution timer being available.)