Revision history for Eshu
0.14 2026-08-17
- Eshu.xs moves back to the top of the dist and the build drops
XSMULTI.
- indent_dir() reports child paths joined with the separator the
caller's own path used, rather than always a forward slash.
- The walk no longer descends into a Windows junction or directory
symlink. stat() cannot tell one from a real directory and S_ISLNK
is a constant 0 there, so the reparse point is now read from the
file attributes, matching the POSIX behaviour of not following a
symlinked directory.
0.13 2026-08-16
- The Windows directory shim renaming EshuDIR / eshu_opendir / eshu_readdir /
eshu_closedir, self-contained on FindFirstFile (kernel32), and
the walker uses those spellings on every platform (mapped to the
real dirent on POSIX).
0.12 2026-08-16
- Windows builds work again.
0.11 2026-08-15
- The HTML/XML indenter now keeps an open-element stack instead of a
bare depth counter. Two bugs fixed (found through Template::Stencil's
pretty goldens and Punk::DevError):
- a same-line <script ...></script> entered verbatim mode without
seeing its own closer and silently swallowed the rest of the
document; an inline verbatim pair is now scanned past, leaving the
rest of the line live.
- an unmatched closer (</tag> with no open) decremented depth
unconditionally, dragging every later closer one level left; it
now adjusts nothing. A closer for an element further down pops
through the unclosed tags in between, so </ul> after bare <li>s
and </root> after a non-void <br> land back on their own column.
- Fixed the Strawberry (MinGW) build: MinGW's <dirent.h> hides struct
dirent and opendir/readdir/closedir behind __STRICT_ANSI__ under
-std=c99, and the _XOPEN_SOURCE define was both the wrong macro and
too late to help - every Windows toolchain now uses the
FindFirstFile compat header dirent_win.h (CPAN Testers, MSWin32
perl 5.42).
0.10 2026-07-21
- Switch to ExtUtils::Depends
0.09 2026-07-15
- include/dirent_win.h: add missing MSVC compat header providing
opendir/readdir/closedir via FindFirstFile/FindNextFile/FindClose.
0.08 2026-07-12
- Add include_dir() class method so sibling modules can resolve the
Eshu include directory without copying headers.
- eshu_hl.h: syntax-highlighting pass for C, Perl, JS, CSS, XML/HTML,
and POD — returns malloc'd HTML with <span class="esh-*"> tokens.
- Add highlight_string() XS binding exposing eshu_hl.h to Perl.
- Add support for TypeScript, Python, Go, Rust, Java, PHP, Ruby, Lua, Bash, SQL, YAML, JSON.
0.07 2026-07-09
- eshu_file.h: undef Perl's fopen/fclose/fread/fwrite/fprintf macros
before plain-C static functions; on Windows+MULTIPLICITY Perl
redirects these to PerlSIO_fopen which requires my_perl in scope.
- eshu_file.h: define _XOPEN_SOURCE 700 before <dirent.h> on MinGW
so opendir/readdir/closedir are visible under -std=c99.
- remove pax headers
- Increase test coverage
0.06 2026-04-05
- Fix PROTOTYPES: ENABLE/DISABLE and VERSIONCHECK: DISABLE being
incorrectly indented at 1 tab instead of column 0..
- Extend test coverage across all language modules:
- Add new test files: t/05-c-structs.t (structs, unions, enums),
t/19-pl-misc.t (unless, until, do-while, local, chained methods),
t/26-xs-advanced.t, t/58-xml-html5.t, t/68-css-advanced.t,
t/99-js-modern.t.
0.05 2026-03-30
- Fix $# (last array index) operator being misinterpreted as a
comment, causing incorrect depth tracking for the rest of the line.
Affects $#array, $#$arrayref, and $#{$arrayref} forms.
- Suppress paren depth for callback patterns: method(sub { ... })
and method([ ... ]) now indent the body +1 from the call site
instead of +2. The ( is suppressed when { or [ also opens on
the same line.
0.01 Date/time
First version, released on an unsuspecting world.