[PATCH 1/4] Add cleaner line-by-line reading primitives