Previous Entry Share Next Entry
Release 1.2.3
jducoeur wrote in querki_project
A bunch of stuff in this release:


Added the new _createHere function. This seems pretty innocuous: this function creates a new Thing whenever this expression is displayed, and is designed to make it possible to build your own inline create-and-edit buttons on a page, rather than always having to go to a new page in order to create a new Thing. I think it will enable you to build smoother and easier workflows than were possible before, and I expect it to get used a good deal.

That said, it kind of broke the world. More precisely, it forced me to rewrite the entire core of the system, as discussed below. Painful, and it cost me a week, but it had to happen eventually, and Querki should be *much* more scalable for it.

(And ignore the warning at the bottom of the page linked above: I just realized that I failed to update the documentation after the aforementioned architectural improvements.)

Introduced the beginnings of Date Math: that is, it's now possible to say something like, "March 15th plus three weeks" in QL. I needed this for a new Use Case -- keeping track of Carolingian Officer terms -- and it covers a bunch of new enhancements.

First, there is the Duration Property -- a standard Property that lets you define a length of time in days, weeks, months or years -- and the more general Duration Type for when you want to make your own Properties of that type.

Then, there is the new _plus() function, which does exactly what you expect -- it lets you add two things together. For the moment, it is limited to this one use case of taking a Date and adding a Duration, but it is designed so that I can add more combinations as folks need them. More generally, this is the camel's nose in the tent for polymorphic functions. It's a bit of a hack for now, but I expect this to gradually evolve to the point where you can define your own definition of _plus for your own types. (Which in turn will lead to typeclasses, but that's *very* advanced stuff.)

Making the QL Powertrain Asynchronous

Those of you who read my personal journal will have come across my discussion the other week about this massive restructuring. Suffice it to say, despite my brag about pushing through the core of the problem in eight hours, dealing with *all* the implications correctly took several additional days.

Basically, every single user-visible function in Querki has now been rewritten to be async-friendly -- it is now possible for this function, or anything it calls, to take A Long Time (in computer terms) without tying up the whole system. This required touching an *enormous* amount of code, but the long-term benefit will be huge: this makes it possible to add all sorts of capabilities that we simply couldn't afford to do before because they could slow the whole shebang down. (It also fixes a few functions that already existed and were pretty iffy, like the User Values code.)

Most of these changes were pretty mechanical (see the linked article for why), but not all. I've found and fixed several bugs; the odds that more exist are pretty high. As always, if you hit something that looks broken, please bring it to my attention.

Bug Fixes

The Client now auto-updates: there's long been an annoying problem that, when we do a Querki upgrade, if you have a Querki window sitting open, it would often give you "unexpected errors" until you reloaded it. This was because the Client and Server had gotten out of sync and now disagreed about the communications protocol, so they would get confused.

Querki is now more sensitive to its version number -- this is compiled into both the Client and Server, and they check it on every call. If the Client is out of date, it gets reloaded on the same page it had been. You will need to reload now if you have a page sitting open, but in the future it should just work automatically.

On general principles, since it's now possible, Querki now displays the current version in the small print at the bottom of each screen.

Fixed External Links, so that you can now say something like [[My Link -> ""__the link__""]] and have it display as the link, the same way internal references do.

Fixed a login problem: if you were having difficulties logging in over a couple of days there, my apologies. One of the libraries way down deep under Querki (Netty) briefly developed a bug that bit us on the ass, and I didn't notice the problem until I happened to log out and log back in myself. Upgrading the library fixed the problem.

(Technically, logging in was still working fine. But the cookie you would get back had an expiration date months in the past, due to an Integer-overflow error.)

Fixed numeric validation: it turned out that, if a Whole Number field was set up with an upper bound, it would give spurious errors when you tried to edit it. Now fixed.


Log in

No account? Create an account