The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Revision history for perl module PLS

0.8 2021-06-29

 - Added configuration of alternate perl path just for syntax checking
   using syntax.perl (client version 0.0.8 needed)
 - Added configuration for enabling/disabling of syntax checking using syntax.enable
 - Moved from Coro and AnyEvent to IO::Async

0.81 2021-07-01

 - Fixed bug where completion did not have full list of options
 - Added locking to indexing and cleanup (related to the previous fix)
 - Added compatibility with perl >= 5.26 - thank you @stphnlyd (https://github.com/stphnlyd)!
 - (client version 0.0.9) Added icon - thank you @kraih (https://github.com/kraih)!

0.82 2021-07-02

 - Fix bug where initial indexing would not occur
 - Formatting is now asynchronous function that can be cancelled,
   since it can take a long time to run.
 - No longer add signal handlers on Windows, to hopefully improve
   compatibility

0.83 2021-07-02

 - Fix crashes caused by quick typing
 - Fix warnings from Future::Utils::repeat due to failed write Futures

0.84 2021-07-05

 - Fix issues with completion
   - Completion did not use the correct range, resulting in code getting garbled
   - Completion did not always show the correct list of available subs,
     or the subs most likely to be useful were buried
 - Migrated from Pod::Find (no longer in core) to Pod::Simple::Search (in core)
 - Hopefully fixed failed CPAN tests by including Future::* packages in the list of
   dependencies
 - Moved retrieval of package symbols from a perl one-liner to an IO::Async::Function,
   in hopes of improved performance and easier maintenance.

0.85 2021-07-06

 - Getting updated perltidy arguments from .perltidyrc no longer requires restarting PLS

0.86 2021-07-06

 - Fixes and enhancements to completion
   - Will now find external packages under all external modules. For example, all
     packages under PLS::* will now be found instead of only PLS.
   - Moved retrieval of package symbols back to a perl one-liner (reverting change from 0.84)
     due to bugs related to caching previous calls to "require".

0.87 2021-07-06

 - Fix to previous version - modules that are not top-level (i.e. contain "::")
   were not found appropriately.

0.88 2021-07-07

 - Fix to previous version - completion would show/would not show subroutines or packages
   when it was appropriate to do so
 - Sigils now cause the completion pop-up to display. Before, you would also need to type the
   start of the variable name.

0.89 2021-07-20

 - Added syntax checking/linting one second after user stops typing.
 - Fixed issue where the perl binary used was inconsistent.

0.891 2021-07-22

 - Syntax checking and linting now occurs in the background, which
   should improve response times
 - Syntax checking and linting is now single threaded, which fixes
   a mysterious issue that prevents temporary files from being deleted.
 - Linting now maps severity 1 issues to "information" level problems,
   so that they are shown. Previously, they were considered "hints",
   which are not shown by the VSCode GUI.
 - Added some PLS::Parser::Document unit tests, and changes to code
   to fix issues found by unit tests, mostly to improve completion.

0.892 2021-07-22

 - Syntax checking and linting are now separated so that they can
   run in parallel, which should improve performance.
 - Syntax checking now takes advantage of IO::Async::Process instead
   of using IPC::Open3.

0.893 2021-07-25

 - Linting now runs single threaded, which prevents multiple runs of
   linting and syntax checking from returning out of order and
   showing incorrect diagnostics.
 - Syntax checking and linting now create a temporary file with the same
   name as the file being checked, so that no workarounds are needed
   to prevent perlcritic from falsely reporting RequireFilenameMatchesPackage
   errors.

0.894 2021-07-25

 - Fix to previous version - no longer index files in temporary directories
   that are hidden.
 - Fix to previous version - add missing File::Path import.

0.895 2021-07-29

 - PLS no longer crashes when opening a single file - fixes
   https://github.com/FractalBoy/perl-language-server/issues/42
 - Fixed an issue where syntax checking a perl file with a BEGIN
   block that prints to STDOUT would cause the language client to
   stop working.

0.896 2021-08-07

 - Completion now handles some edge cases a little better than before
 - Completion will no longer suggest things with newlines in them
 - Fixes/enhancements to syntax checking/linting temporary files:
   - Temporary files are now cleaned up appropriately on NFS
   - Linting no longer uses a temporary file. Only syntax checking makes
   use of the temporary file now.
   - Temporary directories are no longer created, only temporary files.
   - Temporary files now have a predictable prefix: .pls-tmp-

0.897 2021-10-23

 - Fixed an issue causing diagnostics to be displayed for closed files
 - Added workspace symbol support

0.898 2022-01-19

 - Compilation errors are now displayed if there is a filehandle context
   in the error - thank you @bscan (https://github.com/bscan)!

0.899 2022-03-01

 - PLS is now compatible with BBEdit - thank you @mixio (https://github.com/mixio) and @tjparnell (https://github.com/tjparnell)!
 - Errors formatting text with perltidy no longer result in errors from the client, and
   the text will now simply not be formatted. In VSCode, this prevents disruptive
   notifications that a request has failed.
 - Documentation has been updated to include information about syntax related settings.

0.900 2022-08-29

 - Improvements to indexing:
   - Indexing is done using PPR now, instead of PPI, which is much faster.
   - Indexing is now performed by multiple child processes, which is faster.
   - The index is no longer written to a file; instead it is done during startup.
   - Files are now reindexed on change, not just when they are saved.
   - .pls-tmp-* file deletion no longer triggers a cleanup of the index, which should
     improve performance, because it prevents a synchronous stat() of all files.
   - Indexing progress is no longer logged. Instead, it is displayed as work done progress.
 - Support for multiple workspace folders has been added.
 - Handling for edge cases related to completion has been improved.
 - Support for non-ASCII characters in your Perl source code has been added.
 - Go to definition now works for subroutine calls or references,
   where the subroutine name is prefixed by &.
 - Go to definition now works for method calls prefixed by "SUPER".
 - The client process is now periodically checked to make sure it is still
   running. If it isn't, the server will exit.
 - Added Perl code snippets for common patterns.
 - Instead of attempting to filter completion results on the server side first,
   everything relevant is returned and filtering is now all done by the client.
 - Syntax checking and linting is now multi-threaded. Document versions are used to
   ensure old diagnostics are not returned to the client.
   - Files are now checked to ensure they are not closed after syntax checking and linting
     is complete, but before the diagnostics are sent to the client. This prevents  diagnostics from hanging around after a file is closed.
 - The first parameter is now skipped in signature help if a subroutine is
   being called as a class or instance method.
 - PLS now evaluates use statements and determines which imported functions are available
   to be used directly instead of with their fully-qualified names.
   - Hover and completion resolve documentation is available for these functions.
 - Perl built-in variables were added to the completion list.
   - Completion resolve documentation is available for these variables.
 - PLS can now use Cpanel::JSON::XS instead of JSON::XS for improved performance.
 - PPI documents are no longer cached after every change, which was of questionable
   utility and used a ton of memory.
 - Configuration items have been migrated from the perl. to the pls. namespace.
   - This is to prevent conflict with configuration from other Perl language servers in Emacs.
   - Support for configuration in the perl. namespace has been deprecated but not removed.
   - Configuration in the perl. namespace currently takes precedence in order to prevent
     broken configuration on upgrade.
 - Various other stability and quality of life improvements.

0.901 2022-08-29

 - Allow tests to pass from hidden directory
 - Add use strict and warnings to PLS::JSON

0.902 2022-08-30

 - Ignore default configuration in the perl. namespace.

0.903, 0.904 2023-01-21

 - Skipped release numbers

0.905 2023-01-21

 - Many performance improvements for completion
 - Many usability improvements for completion
 - Signature help performance improvements
 - Syntax checking improvements
   - Now using require for syntax checking - thank you @rabbiveesh (https://github.com/rabbiveesh)!
 - Syntax checking now includes POD errors, if Pod::Checker is installed
   and POD checking is enabled.
 - Fixed a crash when code uses File::Glob
   - Works around https://github.com/Perl/perl5/issues/20615
 - Server no longer checks to see if the client process is still running, to allow
   for running PLS in a container - thank you @mbudde (https://github.com/mbudde)!