iOS 9 Updates Coming

With iOS 9 now being out, I've submitted (a couple of days ago actually) updates for Retro, Tip Tabulator, and Paipera. These are minor updates, but they add split screen and slide over support for the newer iPads.

Apologue's latest beta also has the split screen and slide over support. I'm hoping to have a new build this weekend with updated documentation and examples. Work on the standard library has been slow, but it's coming together.

The Passphrase Generator and Kaputi tea timer will be getting updates as well. Passphrase will have a few more options soon (specifically: the ability to set a custom separator and optional capitalization of the first character in each word). Both will be getting iPad support as well. I'm hoping to have these ready to submit early next week.

Further Improvements to Parable

I'm still working on the array code. But it's getting closer, and the changes will be worth it. 

Tonight I added a localize function, which serves to preserve/restore the handful of variables/buffers that the array functions use. This will make anything that nests these functions significantly more reliable. It also provides me with a solution for something that's been troublesome in the past: the lack of local variables. 

Basically I can now simulate local variables by creating a global (which will be hidden later), and using the preserve combinator to save and restore the original contents. 

I still need to finish updating a couple of functions, and there's probably a couple other places in the standard library where this approach will be useful. 

Palindrome Detection in Parable

In prior releases of Parable, this was somewhat complicated by the fact that strings were zero terminated sequences of characters. With the recent work on fixing this (strings are now simply arrays of characters), this becomes much simpler.

The prior approach used for-each and the buffer vocabulary to construct a string with non alphanumeric characters stripped out. This was somewhat clumsy, and if the buffer was not reset properly would result in invalid strings.

A new implementation is much simpler: use the stdlib array filter, convert to lowercase, reverse, and compare. It's now a one liner, instead of three, and works off the stack without separate variables or temporary buffers.

[ [ :c alphanumeric? ] array-filter :s to-lowercase dup reverse :s = ] 'palindrome?' define

Progress Updates

I've submitted an update for Retro on iOS that adds some missing vocabularies. It's now in the ever so annoying waiting for review stage... 

For Parable & Apologue users: there's a new beta series for Apologue if you want to help test this. I'm working on refining the standard library, testing things, and fixing bugs (especially with the array code). This has been a slow process, but I'm finally seeing some decent overall progress, and am looking forward to a stable Parable implementation this fall.

Re: the array code: I've rewritten the array-push, array-pop, array-from-quote, fixed array-reduce, array-filter, and removed array-length (in favor of the generic length?) and removed array-reverse (in favor of the generic reverse function). Still working on array-map and array-compare.  Much of this was neccessitated by the more flexible slice sizing and a desire to make slices, strings, and arrays much more generic in terms of the functionality that can be applied. It'll be worth the time and trouble in the end.