RSSAmplifier

Blog

finl is not LaTeX

Reinventing LaTeX for the twenty-first century

finl.xyzRSS feed ↗10 posts

Latest posts

Announcing finl_unicode 1.0.0

The first externally useful module of the finl project is now available on crates.io: finl_unicode. This library provides the Unicode handling that finl needs for its parsing module, in particular, it allows checking the character category of a char and getting the next grapheme from Peekable CharIndices or Peekable Chars . The category determination is roughly ten times faster than the [ ] Read…

Time spent digging through unicode categories

So, in the course of writing documentation for my Unicode Rust crate, I started digging into the depths of what’s in each category and what I’ve found is, well, it’s a mess. Some of the basic stuff, what I’m using in finl, is ok: letters are correctly identified and classed and marks are mostly ok [ ] Read more

Two approaches to the two-stage table implementation, benchmark results

On my first pass on implementing a two-stage table for the Unicode functionality that I’m writing for finl, I had the first table consist of entries like this: Code(0x91), Page(1), Page(2), ... Where an entry of Code indicated that everything in that 256-byte range had the same code, and an entry of Page was a pointer [ ] Read more

Latest news

Since it’s been a while since I’ve posted an update, current status: I’m working on the parser, but had a bit of a digression to create some Unicode support with the interface that I need for finl. The Unicode Segmentation crate is a nice piece of code, but it assumes that it is to be the [ ] Read more

Revised definition of commands/environments

From the readme for finl_parse, some thoughts on how commands and environments are defined. Input text Input text is assumed to be in NFD normalized format. Commands You indicate a command with \ followed by either a named command or a command symbol. Named commands consist of one or more letters. Letters are defined to include [ ] Read more

At long last code

The first piece of code (something relatively trivial) for finl is now on crates.io: finl-charsub is the character substitution module for finl. It may have use outside of finl when fixed character sequence replacements are needed in a text stream. Future enhancements: I’m pretty sure that there’s room to optimize the hash map implementation that’s currently [ ] Read more

Building a trie in Rust—optimizations

A trie is a variation on a tree whose purpose is to show the result of a sequence of values, something that I’ll be using a lot in finl. For example, TeX has a number of input conventions implemented via ligatures (plus an active character) that I’ll be making optionally available through a character substitution [ ] Read more

A current status on finl

This site got submitted to Hacker News (a lot sooner than I would have chosen), so a few notes on where things are and where they’re going. I’m definitely writing in Rust. Much like I expect finl to remove pain points around LaTeX, Rust removes a lot of pain points around code that I would [ ] Read more

First impressions on Rust

I really like the expressiveness of the language. I’m writing code to read GF files from Metafont right now and there’s the Knuthian 1–4 byte parameter reading. This ends up being rather elegant in Rust, particularly the 3-byte version: pub fn read3 R: Read (input: mut R) - io::Result i32 { let mut buf = [0u8; 4]; input.read( mut [ ] Read more

Stupid Mac tricks

I recently switched from Dropbox to sync for my synchronized cloud folder needs. Along the way, I moved all the files that were in ~/Dropbox to ~/Sync I had a terminal window open with a shell cd’d to ~/DropBox/PreppyLion for the book I’m working on. I expected to get an error about that directory being in use and I couldn’t move [ ] Read more