                Release Notes for cloc version 2.06
                   https://github.com/AlDanial/cloc
                             June 22, 2025

New Languages and File Types:
    o Cangjie
    o Elixir Script
    o Fortran 2003
    o Jsonnet
    o Nextflow
    o Nushell
    o Org Mode
    o Rego
    o UXML, USS (Unity)

Updates:
    o First attempt at using Github Actions to package a release
      including making a Windows executable that works with
      symlinks as used by winget
    o Add column headers for --show-lang and --show-ext output
    o Remove '->' separator in --show-ext output
    o Remove leading blank space for --fmt output written to STDOUT
    o New switch --files-from as a synonym for --vcs
    o New switch --ksep/--thousands-delimiter to show a separator (default
      is a comma) between thousands in output counts
    o Change sequence of Python language filters so that docstrings are
      handled before #
    o Jenkinsfile now recognized as Groovy
    o Improve Windows/Unix path conflicts when using --git --diff in
      git-bash terminal
    o New switch --percent as a shortcut to '--by-percent t' to show
      percentage of totals in blank, comment, code columns
    o Add backtick and C++ style comment support for Svelte
    o Write results in multiple formats if multiple output format
      switches are given (for example --json --yaml --xml)

Bug fixes:
    o Remove file 'irregular"file2.md' from the test suite as filenames
      with embedded double quotes are illegal in Windows and cause git
      pull problems (among other issues).  This file is created dynamically
      during testing on non-Windows operating systems.
    o On Windows use zip format instead of tar for the 'git archive' command
      used when running with --git --diff
    o Remove duplicate "percent" entry in options handling
    o Support --exclude-lang in --diff mode
    o Fix --exclude-lang option when used in diff mode and when all files
      are additions or deletions
    o On Windows, remove temporary "SCALAR(0x..)" files created when
      using --fmt
    o Handle --by-file for JSON and YAML outputs with single and double
      quotes in file names

============================================================================
                Release Notes for cloc version 2.04
                   https://github.com/AlDanial/cloc
                             Jan. 31, 2025

New Languages and File Types:
    o Blueprint
    o MoonBit
    o SurrealQL
    o Pkl
    o Civet
    o Cadence
    o Pek

Updates:
    o Follow file renames when pairing files for --git --diff.
    o Arch Linux now has an AUR package for cloc.
    o New switch --ignore-regex to exclude files whose content matches a regex.
    o New switch --unique to identify unique files found.
    o Descriptive message at the end of a run if timeouts were encountered.
    o Slight performance improvement for --help by installing temporary
      modules later.

Bug fixes:
    o Better handling of Vuejs.
    o Better handling of Oracle PL/SQL.
    o Better error message on failure to count .src.rpm files if external
      tools are not installed.
    o Identify non-Glade .ui files as 'XML (Qt/GTK)' instead of 'Qt'.
    o Apply file filter rules with --no-recurse.

============================================================================
                Release Notes for cloc version 2.02
                   https://github.com/AlDanial/cloc
                             Aug. 2, 2024

New Languages and File Types:
    o Arturo
    o Glimmer JavaScript
    o Glimmer TypeScript
    o Luau
    o Modelica
    o Mojo
    o Nickel
    o Pawn
    o Processing
    o Templ
    o Yang

Updates:
    o Support SQL output with --diff
    o Support counting in .git repo directories not owned by the user.
    o Eliminate the need to write temporary files when using --fmt.
    o Restore Dockerfile CI by fixing CPAN module setup that somehow stopped
      installing Parallel::ForkManager.
    o Improve handling of C comments in Go strings.

Bug fixes:
    o Improve --fmt output column alignments.
    o Handle --no-match when combined with --fullpath and --vcs.

============================================================================
                Release Notes for cloc version 2.00
                   https://github.com/AlDanial/cloc
                             Feb. 17, 2024


       **  Note:  There are no breaking changes between the   **
       **         1.xx versions and this 2.00 release.        **


New Languages and File Types:
    o AnsProlog
    o AppleScript
    o ArkTs
    o Astro
    o Dafny
    o PlusCal
    o Prisma Schema
    o PRQL
    o Slint
    o Snakemake
    o TLA+
    o vyper

Updates:
    o Five new output formats with the new --fmt switch.  Includes the often-
      requested addition of language name with --by-file counts.
    o *.o.d files are ignored
    o Added .j2 as a Jinja Template extension.
    o Added .mts as a TypeScript extension.
    o Added .iuml, .pu. .plantuml, .wsd as as PlantUML extensions.
    o Support Java block comments.
    o More consistent and accurate results from --diff.
    o Disambiguate .inc files among PHP, Pascal, and Fortran.
    o Ignore .gitattribute files.
    o Improved support for --exclude-list-file.
    o Fix JSON output generator which inserted a superfluous comma.
    o Recognize autogenerated C# SpecFlow files and ignore them with
      --no-autogen.
    o Support --list-file with --git-diff-*.
    o SQL output:  add foreign key 'id' to table t referencing 'id'
      in the metadata table.  The key value is Unix epoch seconds when
      cloc was invoked.
    o Support // comments in ReasonML.
    o Support directories in exclusion list files; all files below the
      named directories are excluded.
    o Support --exclude-file-list with --git --diff.
    o New switch, --strip-code, which attempts to only leave comments in
      the output file.

Bug fixes:
    o More accurate counts of XML with block comments.
    o More accurate counts of Java with block comments and comment markers
      within strings.
    o Fix improper handling of --match-d and --not-match-d.

============================================================================
                Release Notes for cloc version 1.98
                   https://github.com/AlDanial/cloc
                             Aug. 19, 2023

New Languages and File Types:
    o Asymptote
    o CoCoA 5
    o Constraint Grammar
    o Hare
    o Jai
    o Linker Script
    o NetLogo
    o Typst

Updates:
    o Added .editorconfig as an INI extension.
    o Added .cppm, .ixx, .ccm, .cxxm, .c++m as C++ extensions.
    o Improved handling of trailing slash with --match-d
    o --exclude-list-file with --git now works as expected.
    o --not-match-d, --not-match-f can now be repeated.
    o --quiet mode is now enabled when STDOUT is not a terminal.
      This makes for cleaner output when piping to other programs.
    o New switch --include-content=regex to only count files whose
      content matches the given regex.
    o New switch --only-count-files to only count files.  Counts for
      blank, comment, and code lines will be zero.

Bug fixes:
    o --no-recurse on Windows
    o Improved exclusion of autogenerated files on Windows.
    o Improved handling of path separators with git in PowerShell.
    o Resolve nondeterministic --diff output.
    o --hide-rate supports all output file types
    o Fixed --diff-list-file with unknown listed file.
    o Fixed parsing of verbose option in the cloc configuration file.

NOTE:  The next release of cloc will be 2.00.  Despite the major version
       number bump, there will be no breaking changes.

============================================================================
                Release Notes for cloc version 1.96
                   https://github.com/AlDanial/cloc
                             Dec. 18, 2022

New Languages and File Types:
    o Cairo
    o Carbon
    o Circom
    o Containerfile
    o HolyC
    o kvlang
    o Nunjucks
    o OpenSCAD
    o P4
    o Pest
    o Pony
    o TEAL
    o WGSL

Updates:
    o New switch --diff-list-files to run diff given two list
      files.
    o Handle comments embedded in OCaml strings.
    o Write empty JSON and XML structures if the inputs yield zero
      counts.
    o Including Win32::LongPath to support long paths on Windows.
    o Better support for building and running Docker image on Windows
    o Better output file names when running with --count-and-diff
      and --out.
    o Resolve internal file handle conflict when running --diff with
      --sdir or --categorized.

============================================================================
                Release Notes for cloc version 1.94
                   https://github.com/AlDanial/cloc
                             July 4, 2022

New Languages and File Types:
    o Derw
    o Finite State Language
    o Flatbuffers
    o Futhark
    o Godot Shaders
    o HTML EEx
    o Lem
    o PEG, peg.js, peggy, tspeg
    o Text (.txt and .text)
    o Visual Studio Module
    o X++

Updates:
    o Handle empty Unicode files which contain only a BOM (byte
      order mark).
    o The arguments to --include-lang are now case insensitive.
    o .cjs added as JavaScript extension.
    o Switches --git and --xml together now include additional git
      metadata (origin, branch, commit hash) in the XML output.  Future
      releases will include these additions in YAML, JSON, SQL, and
      Markdown output as well.
    o New switch --no-recurse prevents recursive directory traversal.

============================================================================
                Release Notes for cloc version 1.92
                   https://github.com/AlDanial/cloc
                             Dec. 5, 2021

New Languages and File Types:
    o GraphQL
    o Metal Shading Language
    o PlantUML
    o Properties
    o Umka

Updates:
    o The .bzl and .bazel extensions are now associated with Starlark.
    o Added support for Puppet functions and type aliases.
    o Removed reliance on XML definition with --force-lang-def
    o Fixed broken --csv-delimiter handling.
    o Fixed broken interaction of --vcs=git with --max-file-size;
      support floating point value for --max-file-size.
    o Improved support for uniform handling of uppercase and
      lowercase filenames and extensions on Windows.
    o Recognize CMakeLists.txt on Windows.
    o Fixed handling of --unicode for small files.
    o Updated Dockerfile to produce a smaller image.
    o Improved contents of --ignored file (now includes skipped
      binary files and does not include directory names).
    o Identify SCSS separately from Sass.
    o Updated Sass filters to handle C++ style comments.
    o Improved support for Assembly.
    o Recognize :: comments in DOS batch files.
    o Properly handle explicitly-excluded files (for example,
      .gitignore) with --diff.


============================================================================
                Release Notes for cloc version 1.90
                   https://github.com/AlDanial/cloc
                             May 1, 2021

New Languages and File Types:
    o BizTalk Orchestration
    o BizTalk Pipeline
    o Cake Build Script
    o C# Designer
    o CSV
    o Delphi Form
    o Gleam
    o Godot Resource
    o Godot Scene
    o Juniper Junos
    o ReScript
    o Ring
    o Visual Studio Solution
    o Web Services Description
    o Zig

Updates:
    o Dockerfile:  add .[dD]ockerfile as an extension; treat
      files named Dockerfile.ext as Dockerfile unless ext
      maps to a recognized language other than cmake or m4.
    o Identify autogenerated C# files.
    o If getting input from a list file or using a language
      definition file, also check for (and use, if it exists)
      an options.txt file in the same directory.
    o Use --csv-delimiter for --ignored, --categorized output.
    o Support diff summation in csv format.
    o Update cloc's Unix Makefile to support macOS
    o Rename Junos to Juniper Junos
    o Stratify Visual Basic to for Applications, .NET, Script
    o Use tar on Windows 10 instead of zip with --git --diff
    o Track upper/lowercase file names on Windows to permit
      consistent diffs.
    o Support nested Elm comments.
    o Update to Regexp::Common 2017060201.
    o Minimum Perl version is now 5.10.0
    o New options --skip-leading, --summary-cutoff
    o Refine comment definitions for ASP.NET, Razor
    o Handle Julia docstrings.
    o Adjust timeout and diff_timeout values to avoid alarm
      overflows.
    o Add extensions .btproj, .msbuild for MSBuild script

Bug Fixes:
    o Add missing Raku_or_Prolog() subroutine.
    o Handle UTF encoded list files (file given to --list-file).
    o Improved support for options parsing from config file.
    o Catch unidentified files via --diff-list-file.
    o Don't insert extra newlines when stripping with --unicode.
    o Strip literal '\x' from JSON output strings.
    o Improve logic for detecting Unicode files less than
      90 bytes in size.
    o Fix divide by zero classifying nonreadable .b files.
    o Escape backslash for 'report_file' entry in JSON, YAML on
      Windows.

============================================================================
                Release Notes for cloc version 1.88
                   https://github.com/AlDanial/cloc
                            Sept. 12, 2020

New Languages and File Types:
    o LLVM IR
    o Logos
    o Meson
    o Mojo
    o Odin
    o Jinja Templates
    o WXML
    o WXSS

Updates:
    o Support MATLAB block comments.
    o More flexible matching of git hashes.
    o Case insensitive diff file alignment on Windows.
    o Add .BAS as a Visual Basic extension
    o Rename Objective C to Objective-C

Bug Fixes:
    o Add missing Raku_or_Prolog() subroutine.
    o Handle UTF encoded list files (file given to --list-file).
    o Improved support for options parsing from config file.
    o Catch unidentified files via --diff-list-file.
    o Don't insert extra newlines when stripping with --unicode.

============================================================================
                Release Notes for cloc version 1.86
                   https://github.com/AlDanial/cloc
                             May 17, 2020

New Languages and File Types:
    o ASP.NET Core Blazor WASM (*.razor)
    o Bazel
    o dhall
    o Raku (renamed from Perl6)
    o Squirrel
    o SugarSS
    o Svelte
    o TNSDL
    o Remove .tsv as a RobotFramework extension
    o Add .inl as a C++ extension.
    o Add #_ as a Closure comment marker.

Updates:
    o Provide alternate algorithms for --git --diff:
      --git-diff-rel computes differences of only files that have changed
                     between the two git commits (this is now the default
                     action with "--git --diff")
      --git-diff-all computes differences between all files in the repo
                     between the two git commits (this was the default
                     action with "--git --diff" behavior in 1.84)
    o New cloc releases will be accompanied by Docker instances on
      Dockerhub.
    o Support reading file names from a STDIN pipe.
    o Check unrecognized files to see if they contain XML.
    o Switch --vcs supports an 'auto' option to automatically determine
      if one is counting in a subversion or git repository.
    o Expand git archives in user-provided scratch directory with --sdir.
    o Mask comment markers in Kotlin raw strings.
    o Make output more deterministic with secondary sort of results.
    o Avoid computation of log(0).
    o Improve --strip-str-comments logic.
    o Improve handling of triple quotes (Python, Groovy, Gradle).
    o New switch --diff-list-file, to perform diff's using a provided
      list file containing file pairs to compare.
    o New switch --ignore-case-ext to ignore upper/lowercase of
      file extension.

Bug Fixes:
    o Fix --exclude-list-file with --diff.
    o Fix creation of empty tar file if this happens during --git --diff.
    o Restore --exclude-lang functionality with --diff.

============================================================================
                Release Notes for cloc version 1.84
                   https://github.com/AlDanial/cloc
                         September 22, 2019

New Languages and File Types:
    o APL
    o Apache Thrift
    o Imba
    o IPL
    o SaltStack

Updates:
    o Improved handling of --git --diff
    o Add .podspec as a Ruby file extension.
    o New switch, --stat, to force a stat check of
      directories. This enables traversal of directory
      types whose nlink count does not match the count
      of subdirectories (examples: CD-ROM, FAT, AFS).
    o Force stat on top level directories.  This is
      companion logic to the new --stat switch.
    o Add file extensions defined by the Linguist project.
    o New switch, --exclude-content, to exclude files if
      any of their lines match a regex.
    o New switch, --timeout, to give control over timeouts
      on direct counts (as opposed to diff timeouts).
    o On Windows, lower batch size on git archive
      commands to 100 files (the value is 1,000 on *nix).
    o Better identification of Smarty .tpl template files.

Bug Fixes:
    o On Windows, use double quotes for git archive entries.
    o On Windows, double slash path separators with --by-file
      and JSON output.
    o On Windows, replace / with \\ in results only when
      running with --by-file.
    o Fix header line metrics for files/sec and lines/sec
      when doing --diff.
    o Python:  handle cases of /* or */ embedded in strings
      (this conflicted with internal logic which replaced
      docstring triple quotes with C comments).
    o Fix mishandling of --exclude-dir with --follow-link.
    o Fix doubly-counted #! line
    o Support --hide-rate with csv output.

============================================================================
                Release Notes for cloc version 1.82
                   https://github.com/AlDanial/cloc
                           May  3, 2019

New Languages and File Types:
    o Apex Class
    o DIET
    o Fennel
    o FXML
    o Jupyter notebook files (.ipynb)
    o Python wheel files (.whl)
    o SVG
    o reStructuredText

Updates:
    o Handle backslashed quotes in strings to improve --strip-str-comments
      logic.
    o Improve Perl v. Prolog identification.
    o New switch --docstring-as-code to count Python docstrings as code.
    o Partial support for Lua nested comments.
    o Renamed Skylark to Starlark.
    o Modified Java filter to try to handle embedded comments better.
    o Recognize groovy as one of the #! languages.
    o Add .pyw as a file extension for Python.
    o Update comment definitions for Velocity Template Language.
    o Override file alignment logic with --diff when only two files are
      given.
    o Identify TeX v. Visual Basic for .cls file extension.
    o Include result summation line with --csv output.
    o Support --csv, --json, --md, --xml, --yaml output types for the
      --ignored debug file.
    o Force IO encoding to allow wider Unicode characters for creating
      Windows exe's with PAR::Packer

============================================================================
                Release Notes for cloc version 1.80
                   https://github.com/AlDanial/cloc
                           Oct. 5, 2018

This is a bug-fix release to solve mishandling of git inputs for
straight counts in 1.78 (--git --diff works ok in 1.78),
https://github.com/AlDanial/cloc/issues/328.

New Languages:
    o ReasonML

Updates:
    o New SQL output style option with "--sql-style Named_Columns".  This
      includes the table "t" column names in each insert statement.
    o New option --file-encoding to create all output files using the
      given file encoding (for example "--file-encoding
    o Add escript as script language for Erlang.
    o Improved handling of custom Smarty definitions through
      --read-lang-def.
    o Better diff logic when comparing two files.
    o Faster program start on the Unix-tuned version of cloc when
      multiple processors are not used.

============================================================================

                Release Notes for cloc version 1.78
                   https://github.com/AlDanial/cloc
                           Sept. 7, 2018

New Languages:
    o EJS
    o Gradle
    o Igor Pro
    o JSON5
    o Nix
    o R Markdown
    o SparForte
    o Xtend

Updates:
    o Interpret "--diff-timeout 0" as allowing unlimited time to compute
      diffs.
    o Add .inl extension for C++
    o Improve language rules for Assembly and JCL.
    o Better handling of OCaml comments (don't just use Pascal rules).
    o Handle unusual file names with --use-sloccount.
    o Remove GNU grep specific -P option with --use-sloccount (fall back
      to simpler BSD grep options).
    o Handle OCaml nested comments.
    o Remove debug print statement for counts of Rmd (R markdown) files.
    o New switch --include-ext to only count files with the given extension.
    o New switch --config to load command line switches from a file.
    o New switch --hide-rate to suppress header line (makes the output
      deterministic).
    o Skip header line when combining diff reports.
    o Allow any number (including just one) of diff reports to be summed.
    o Exit early if --diff arguments are the same.
    o New switch --strip-str-comments to (try to) avoid 'Complex regular
      subexpression recursion limit' warning.
    o Run cleanly under Perl 5.28 and 5.32 by backslashing braces in regex.
    o Suppord Idris block comments.
    o Set UTF-8 encoding on XML and XSL files generated by cloc.
    o New switch --write-lang-def-incl-dup to include files with extension 
      collisions (but should be used with care because the resulting language
      definition file will be rejected by cloc until all collisions have been
      resolved).

Bug Fixes:
    o Correctly handle --not-match-d and --follow-links together.
    o Fix --git --diff handling of large file sets.
    o Remove \$ from git pathspec filename-cleansing regex as git already
      handles such filename mangling
    o Remove debug die() invocation in make_file_list().
    o Fix improperly formatted JSON emitted with --by-file-by-lang.
    o Improve accuracy of C#/Smalltalk disambuguator (was biased toward
      counting .cs files as Smalltalk).
    o Improve accuracy of TypeScript/Qt Linguist disambuguator.
    o More robust YAML output by quoting file and language names.
    o Handle more unusual file names with --git --diff

============================================================================
                Release Notes for cloc version 1.76
                   https://github.com/AlDanial/cloc
                          February 9, 2018

New Languages:
    o Agda
    o AsciiDoc
    o Chapel
    o Fish Shell
    o Gencat NLS
    o Lean
    o HCL
    o Oracle PL/SQL
    o PL/M
    o ProGuard
    o RAML
    o Skylark
    o SWIG

Updates:
    o Performance improvement by using multiple cores for both
      straight counts and --diff via the new --processes option
      added by Sietse Snel, https://github.com/stsnel.
    o Support --git on Windows.
    o Improve identification of Qt Project files (instead of IDL).
    o Fix language determination logic so that languages that map
      to the same file extension and have ties in the number of
      accumulated points always return the same result.
    o Add support for replace_between_regex in --write_lang_def and
      --read_lang_def.
    o Add SUM section to JSON, YAML output with --diff.
    o Make numeric values in JSON output numbers instead of strings.
    o Optionally exclude autogenerated files with new --no-autogen
      (currently only supports the Go language).

Bug Fixes:
    o Remove temp directory prefix for YAML and JSON output when
      counting git archives with --by-file.
    o Properly handle git files with spaces embedded in the file name.
    o Remove a debug regex inadvertently included in v1.74.

============================================================================
                Release Notes for cloc version 1.74
                   https://github.com/AlDanial/cloc
                          September 8, 2017

New Languages:
    o BrightScript
    o Cucumber
    o Drools
    o F# Script
    o GraphQL
    o Idris
    o Literate Idris
    o Smalltalk
    o Solidity
    o Stata
    o TOML

Updates:
    o New option, --git, to allow git commit hashes and branch
      names as inputs (issue 205).
    o Add .asd extension for Lisp.
    o Add .snapshot to the list of excluded directories.
    o New option --no-autogen to ignore files generated
      by code production systems like GNU autoconf.
    o Rename "ASP.Net" to "ASP.NET".
    o Improvements to Specman e parsing (issue 175).
    o Support uppercase CPP extension (issue 177).
    o Support triple extensions.
    o Improve language distinction between C# and Smalltalk (issue 160).
    o Consider Elixir docs as comments.
    o Handle Python docstrings made with single quotes.
    o Replace built-in "is it a file?" and "is it a directory?"
      with native Perl -f and -d operators (these were unreliable
      on older versions of Perl on Windows).
    o Put timeout around Regexp::Common regex evaluation to prevent
      hangs on unbalanced comment markers within huge strings (issue 206).
    o Fix Pascal regex with '{' for Perl version >= 5.26 (issue 209)
      and '(*', '*)' comment matching (issue 212).
    o Rename Antlr to ANTLR Grammar.
    o Add .g4 extension for ANTLR Grammar.
    o Replace soon-to-be deprecated File::Glob::glob() with
      File::Glob::bsd_glob() (issue 214).
    o Revert from charset=iso-8859-1 to charset=utf-8 on undocumented
      --html option.
    o For Assembly, process # comments before C++ comments.

Bug Fixes:
    o Correct handling of remove_between_general and
      remove_between_regex when running with --read-lang-def (issue 166)
    o Fix bug handling balanced parentheses in Forth (issue 183)
    o Force legal output filenames with --count-and-diff and --out
      (issue #220).

============================================================================
                Release Notes for cloc version 1.72
                   https://github.com/AlDanial/cloc
                          January 14, 2017

New Languages:
    o Antlr
    o Dockerfile
    o Glade
    o GLSL
    o Lisp Flavored Erlang
    o Mako
    o PO files (used for translations in GTK programming)
    o RapydScript
    o Slice interface specification language
    o Specman e
    o Vue.js Component

Updates:
    o Support for Lua --[[ ]] block comments.
    o Improve --not-match-d support.
    o Add extension .tsx for TypeScript.
    o Renamed SASS to Sass.
    o '--vcs git' now ignores code in git submodules.
    o Add .p6 and .pm6 extensions for Perl 6.
    o Add .phtml extension for PHP.
    o Add .psm1 and .psd1 extensions for PowerShell.
    o Only print a small usage summary when running cloc without
      arguments.  Now have to run 'cloc --help' to get the huge
      output.

Bug Fixes:
    o Filter updates for Assembly, Groovy to prevent infinite recursion in
      regex.
    o Correct handling of Julia block comments.
    o Correct output when running with '--diff --json' or '--diff --yaml'.
    o Fix logic error in code that handled --exclude-dir.
    o Fix error in handling of '--vcs X' where X is a user-provided
      command to generate a list of files.

============================================================================
                Release Notes for cloc version 1.70
                   https://github.com/AlDanial/cloc
                             July 1, 2016

 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 *   v1.70 is a bugfix release to correct the "which: no abc in"   *
 *   problem seen on non-Debian based Linux distributions; ref.    *
 *   https://github.com/AlDanial/cloc/issues/105                   *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

New Languages:
    o Freemarker Template
    o Haxe
    o Nim
    o TeX

Updates:
    o Improved handling for Forth comments.

Bug Fixes:
    o Fixed "which: no abc in" bug; issue 105
      https://github.com/AlDanial/cloc/issues/105

============================================================================
                Release Notes for cloc version 1.68
                   https://github.com/AlDanial/cloc
                             June 3, 2016

New Languages:
    o Blade
    o Brainfuck
    o builder
    o Clean
    o INI
    o JSX
    o liquid
    o Logtalk
    o Markdown
    o Mathematica
    o Pug
    o Qt Linguist
    o Slim
    o TTCN

Updates:
    o --help output now goes to STDOUT instead of STDERR.
    o Shortened cloc's output header line by removing "https:" from the
      github repository URL.
    o Add block comment support to CoffeeScript.
    o Improve Coq/Verilog disambiguator by recognizing more Coq keywords.
    o Improve handling of HAML block comments.
    o Improve Pascal/Puppet disambiguator.
    o Improve Perl/Prolog disambiguator by recognizing Perl HERE documents.
    o Add .cuh extension for CUDA.
    o Add .hxx extension for C/C++ header files.
    o Associate .mk extension with make.

New options and features:

    --use-sloccount           If SLOCCount is installed, use its compiled
                              executables c_count, java_count, pascal_count,
                              php_count, and xml_count instead of cloc's
                              counters.  SLOCCount's compiled counters are
                              substantially faster than cloc's and may give
                              a performance improvement when counting projects
                              with large files.  However, these cloc-specific
                              features will not be available: --diff,
                              --count-and-diff, --strip-comments, --unicode.
     --vcs=<VCS>              Invoke a system call to <VCS> to obtain a list of
                              files to work on.  If <VCS> is 'git', then will
                              invoke 'git ls-files'.  If <VCS> is 'svn' then
                              will invoke 'svn list -R'.  The primary benefit
                              is that cloc will then skip files explicitly
                              excluded by the versioning tool in question,
                              ie, those in .gitignore or have the svn:ignore
                              property.
                              Alternatively <VCS> may be any system command
                              that generates a list of files.
                              Note:  cloc must be in a directory which can read
                              the files as they are returned by <VCS>.  cloc
                              will not download files from remote repositories.
                              'svn list -R' may refer to a remote repository
                              to obtain file names (and therefore may require
                              authentication to the remote repository), but
                              the files themselves must be local.
 

    o Handle .deb archive files on Unix-like operating systems that have
      the Debian 'dpkg-deb' command.  This is only useful for counting
      lines in Debian packages that contain source code--most contain
      only compiled executables.

Bug Fixes:
    o Updated documentation for --exclude-dir to prohibit path separators.
    o Correct file path normalization problem when directory contains
      trailing slash.
    o --list-file:  Return an empty list if the file cannot be read.
    o --exclude-dir:  correctly handle command line input consisting of a 
      file with leading directory names, eg abc/def/hello.c, by first
      checking that parent directories aren't in exclusion list.
    o Expand behavior of --fullpath to also work with --not-match-d.
    o Split into two statements expressions like "scalar(split(..))"
      which are deprecated in Perl 5.22.
    o --sum-reports: Give a useful error message when encountering an unknown 
      language during report summation.

============================================================================
                Release Notes for cloc version 1.66
                   https://github.com/AlDanial/cloc
                          January 23, 2016

New Languages:
    o AspectJ
    o Coq
    o CSON (CoffeeScript Object Notation)
    o Crystal
    o DOORS Extension Language
    o EEx (Embedded Elixir)
    o Elm
    o Forth
    o GDScript
    o Jam
    o Nemerle
    o PowerBuilder
    o Stylus
    o Twig
    o XHTML
    o XMI (XML Metadata Interchange)
    o zsh

Updates:
    o Add block comment support to CoffeeScript.
    o .xhtml is no longer associated with JavaServer Faces; instead
      it is counted as XHTML
    o Remove association of .config to ASP.Net (.config is too
      general to be appropriated by one language).
    o Support .hlsl extension for HLSL.
    o Changes to support Perl v5.22:
      * Remove references to deprecated "defined(@array)".
      * Remove "no warnings 'deprecated'" as it is no longer needed.
    o Greater reliance on Regexp::Common's C++ regex instead of
      using internal // filter.
    o Update code pulled from Regexp::Common 2.120 to 2013031301.
    o Support .f and .for extensions for Forth and disambiguate
      between Fortran and Forth.
    o Better output with --explain for languages that share file
      extensions.
    o Ignore .o.cmd files as they are Linux kernel compilation
      optimization files.
    o Add .kts extension for Kotlin.
    o Add .cljc extension for ClojureC.
    o Add .ui extension for Qt.
    o Support php and php5 as #! scripting languages.

New options and features:

   --json                    Write the results as JavaScript Object Notation
                             (JSON) formatted output.
   --fullpath                Modifies the behavior of --match-f or
                             --not-match-f to include the file's path
                             in the regex, not just the file's basename.
                             (This does not expand each file to include its
                             absolute path, instead it uses as much of
                             the path as is passed in to cloc.)
   --md                      Write the results as Markdown-formatted text.
   --verbose                 Synonym for -v.


Bug Fixes:
    o Don't write language definition for "(unknown)" (via --write-lang-def).
    o Fix length of hyphen line with --sum-reports. 
    o Fix uninitialized variable bug when --explain is given an unknown
      language.
    o Force files ending with .smarty to be counted as Smarty (unless over-
      ridden by --force-lang=X).
    o Fix hash reference bug triggered with '--csv --by-percent' combination .
    o Correctly recognize R files on Windows.

============================================================================
                Release Notes for cloc version 1.64
                   http://cloc.sourceforge.net
                           June 27, 2015

New Languages:
    o DITA
    o dtrace
    o Elixir
    o Embedded Ruby
    o Julia
    o Mercury
    o Prolog
    o Protocol Buffers
    o PureScript
    o Qt Project
    o Racket
    o SAS
    o Standard ML
    o Titanium Style Sheet
    o Visual FoxPro
    o Windows Module Definition

Updates:
    o Add support for sharpsign vertical bar block comments in Lisp.
    o Added python, python2.6, python2.7, python3, python3.3, python3.4
      as script executables to identify Python files that don't end in .py.
    o Added rexx and regina as script executables for Rexx.
    o Extend Assembly filters to include !, |, @, --.
    o Add for, FOR, ftn, FTN extensions for Fortran 77.
    o Improve --show-lang so that it exactly matches a language instead of
      finding the language in a regex (eg 'C' matched nearly everything).
    o Update --explain to also print language extensions.
    o Change --sql schema by adding fields File_dirname, File_basename to 
      table 't' of SQL output to simplify obtaining per-directory metrics
    o Escape embedded single quotes in file names (bug #127) for SQL output.
    o Improved language detection for Objective C (earlier misidentified
      as MATLAB or other .m languages).
    o Sort duplicate file lists by full path instead of basename to give
      repeatable output.
    o Change SQL schema 'text' type to more standard 'varchar(500)'.
    o Added .gradle extension for Groovy.
    o Better handling of files ending with .d (could be Linux init scripts).
    o Added .robot extension for RobotFramework.
    o Support Python unicode docstrings, patch by <clemens@kaposi.name>.
    o Ignore line ending styles when diff'ing Windows and Unix files.


New options and features:

   --count-and-diff <set1> <set2>
                            First perform direct code counts of source file(s)
                            of <set1> and <set2> separately, then perform a 
                            diff of these.  Inputs may be pairs of files, 
                            directories, or archives.  See also --diff, 
                            --diff-alignment, --diff-timeout, --ignore-case, 
                            --ignore-whitespace.

   --include-lang=<L1>[,L2,]
                           Count only the given comma separated languages
                           L1, L2, L3, et cetera.
                           Patch by Ryan Lindeman.

   --by-percent  X         Instead of comment and blank line counts, show
                           these values as percentages based on the value
                           of X in the denominator:
                              X = 'c'   -> # lines of code
                              X = 'cm'  -> # lines of code + comments
                              X = 'cb'  -> # lines of code + blanks
                              X = 'cmb' -> # lines of code + comments + blanks
                           For example, if using method 'c' and your code
                           has twice as many lines of comments as lines
                           of code, the value in the comment column will
                           be 200%.  The code column remains a line count.
                           Patch by Ryan Lindeman.

   --sql-style=<style>     Write SQL statements in the given style instead
                           of the default SQLite format.  Currently, the
                           only style option is Oracle.


Bug Fixes:
    o Added a more sophisticated method to align top level directories
      for --diff.
    o Fixes XML output when running with --sum-reports and --xml so the
      .lang file ends with <languages/> and the .file file ends with
      <files/> (previously both ended with <languages/>).
    o Fix logig error when handling HAML block comments.
    o Fix language filter for Groovy.
    o Fix some forward and backslash issues with file name parsing
      in Windows filenames during --diff.
    o Handle --exclude-file-list when running with --diff.
    o Fix regex error for detecting double extensions (eg .sproc.sql)
      provided by Super Dave <faygo@users.sf.net>

============================================================================
                Release Notes for cloc version 1.62
                   http://cloc.sourceforge.net
                           July 29 2014

New Languages:
    o CUDA
    o ECPP
    o F#
    o Grails
    o Haml
    o Handlebars
    o Harbour
    o HLSL
    o JSON
    o Kotlin
    o Mustache
    o PL/I
    o Puppet manifest
    o R
    o Racket
    o Rake
    o RobotFramework
    o Swift
    o TypeScript
    o Unity-Prefab
    o Velocity Template Language
    o Windows Message
    o Windows Module Definition
    o Windows Resource
    o WiX include
    o WiX source
    o WiX string localization
    o xBase
    o xBase Header
    o XQuery

Updates:
    o JSP             Added extension  .jspf
    o MSBuild script  Added extensions .vcproj, .wixproj, .vbproj
    o DOS Batch       Added extensions .cmd, .btm
    o C++             Added extension  .c++
    o Pascal          Lines that begin with {! are counted as code as
                      some compilers treat these as a compiler directives.
    o Lisp            Treat text between #| and |# as a block comment.
    o Suppress progress rate display if --quiet is set.
    o --exclude-dir directories are pruned before the file search 
      descends into those directories instead of just ignoring
      files there
    o The logic that aligns file pairs between --diff sets was 
      rewritten.  Corner cases such as diff between one file and
      a set of files are handled much more precisely.

New options and features:

   --explain=LANG            Print the filters used to remove comments for
                             language LANG and exit.  In some cases the 
                             filters refer to Perl subroutines rather than
                             regular expressions.  An examination of the
                             source code may be needed for further explanation.

   Added new filter macros:
      o remove_between_general, which accepts start and end comment marker.
      o remove_between_regex, which accepts start and end comment regexes.

   Properly handle text files that begin with Unicode Byte Order Marks.

Bug Fixes:

    Remove spurious newlines produced by bad comment removal regexes
    which could cause incorrect diff's.
    Correctly handle file extensions with non-alphanumeric characters.
    Show file count with --sum-reports.
    Properly encode characters &,<,>,",' in XML output.
    Properly read and write entries for the 'remove_between_general'
    macro in language definition text files.

============================================================================
                Release Notes for cloc version 1.60
                   http://cloc.sourceforge.net
                           August 16, 2013

New Languages:
    o LESS
    o Razor
    o JavaServer Faces
    o SASS
    o Apex Trigger
    o Visualforce Component
    o Visualforce Page
    o Verilog-SystemVerilog
    o Pig Latin

Updates:
    o Improved handling of UTF-16 (both little and big endian).
    o use Time::HiRes if available.
    o Improved logic that distinguishes between Objective C,
      MUMPS and MATLAB files.
    o Added information about duplicate files to output created
      by --ignored.
    o Added support for .tar.xz compressed archives.
    o CMake                Added .cmake file extension.
    o MXML                 Added support for Actionscript
    o Groovy               Added .gant file extension.
    o Vala                 Recognize Vala header files.

New options and features:

   --max-file-size=<MB>      Skip files larger than <MB> megabytes when
                             traversing directories.  By default, <MB>=100.
                             cloc's memory requirement is roughly twenty times 
                             larger than the largest file so running with 
                             files larger than 100 MB on a computer with less 
                             than 2 GB of memory will cause problems.  
                             Note:  this check does not apply to files 
                             explicitly passed as command line arguments.

Bug Fixes:

    Suppress "Wrote <file>" messages when running with --quiet.
    Fixed an error that caused cloc to fail with "Can't use an 
    undefined value as an ARRAY reference" when running with 
    Perl 5.16 or newer when it encounters certain file types.

============================================================================
                Release Notes for cloc version 1.58
                   http://cloc.sourceforge.net
                           March 3, 2013

Version 1.58 introduces a new version numbering scheme:  odd numbers 
represent development versions while even numbers represent stable,
released versions.  There was no release 1.57 as it was the development
version leading to this release.

New Languages:
    o Ant
    o Arduino Sketch
    o InstallShield
    o Maven
    o PowerShell
    o Rust
    o Vala

Updates:
    o OCaml                Added extensions .mli, .mly, .mll
    o --read-lang-def      See the section --read-lang-def v. 
                           --force-lang-def below.

New options and features:

  --diff-timeout N
      o Running diff on large files with many repeated lines may
        cause Algorithm::Diff::sdiff() to run for hours.  This
        option sets the upper time limit on the duration of this
        operation for a single file pair.  Default is 10 seconds.

  --force-lang-def FILE
      o See the section --read-lang-def v. --force-lang-def below.

  --skip-archive REGEX
      o Ignore files that end with the given Perl regular expression.  
        For example, if given --skip-archive='(zip|tar(.(gz|Z|bz2|xz|7z))?)'
        the code will skip files that end with .zip, .tar, .tar.gz, 
        .tar.Z, .tar.bz2, .tar.xz, and .tar.7z (feature req. 32).

    Prevent "defined(@array) is deprecated" warnings with Perl 5.16.1.

    Show an example of alternation in the documentation for the --match-d
    switch.


--read-lang-def v. --force-lang-def
      
    The --read-lang-def option allows one to replace cloc's language
    processing filters with custom settings.  The problem with this
    option is that it overwrites internal logic that handles languages
    which map to the same file extension.  Currently these are
        MATLAB/Objective C/MUMPS   -> .m
        Pascal/PHP                 -> .inc
        Lisp/OpenCL                -> .cl
    The logic needed to handle these extension collisions is not
    easily expressed in an input text file.  In any event, in most
    instances one merely wishes to augment cloc's language definitions
    with entries for new languages rather than replace definitions
    for known languages.

    For this reason, the behavior of --read-lang-def has been changed
    to merge new language definitions found in the given file with
    cloc's existing languages.  Where there are conflicts, cloc's
    built-in definitions take precedence.  This new behavior allows
    one to add new language definitions without sacrificing cloc's
    ability to count files languages ending with .m, .inc, or .cl.

    The new option --force-lang-def behaves exactly like --read-lang-def
    did in cloc versions 1.56 and earlier--it completely ignores
    cloc's internal language definitions and replaces them with definitions
    in the given file.  However, one will no longer be able to count
    files with the extensions .m, .inc, or .cl.

Bug Fixes:

    Suppress "Wrote <file>" messages when running with --quiet.

    Create .file output when running with --sum-reports (id 3571353).

    Correct output for languages starting with a lower case letter when 
    running with --diff --sum-reports.

    Show correct count of files added/deleted with --diff (id 78).

    Handle special case of --diff between one file and a set of files (id 82).

    Prevent cloc from inadvertently counting lines from temporary
    installations of Algorithm::Diff and/or Regexp::Common.  This happens
    on faulty Perl installations (eg. MinGW MSYS Perl) which cause 
    File::Temp::tempdir() to return the current working directory.

============================================================================
                Release Notes for cloc version 1.56
                   http://cloc.sourceforge.net
                           April 3, 2012   

Version 1.56 introduces an additional documentation file, cloc.1.pod, which
can be used to produce cloc's documentation in the style of a Unix man page,
plain text, HTML, or LaTeX.

New Languages:
    o Clojure
    o ClojureScript
    o AutoHotkey
    o QML
    o CFScript
    o OpenCL

New options and features:

  --unix
      o Override the operating system autodetection logic and run in 
        UNIX mode.

  --windows
      o Override the operating system autodetection logic and run in 
        Microsoft Windows mode.

  --show-os
      o Print the name of the of the operating system mode and exit.

  --csv-delimiter
      o Use the provided delimiter instead of a comma when generating 
        csv output.

  --stdin-name
      o On UNIX systems, enables cloc to count code piped in via STDIN.
        This switch provides a filename for to use to infer the language.

  .git subdirectories are now ignored.

  Updated yacc counter to recognize C99 comments.

  Improved detection and reporting of ignored zero sized files.

  Removed spurious <languages> from YAML output.

  Fixed handling of multi-line Ruby comments surrounded by =begin/=end.

  Associated .ctl and .dsr extensions with Visual Basic

Bug Fixes:

  Produce correct diff results when comparing empty files with populated 
  files.

  Remove temporary directory names from --by-file output when working
  with archive files.

  Honor user's requested scratch directory if given --sdir.

============================================================================
                Release Notes for cloc version 1.55
                   http://cloc.sourceforge.net
                          October 14, 2011

Version 1.55 is a bugfix release to correct malformed XML output 
that was introduced in the 1.54 release.  Two minor enhancements
were added:

New Languages:
    o Dart

New options and features:

  --sum-one
      o Force printing of the SUM: line even if only one source
        file is counted.

============================================================================
                Release Notes for cloc version 1.54
                   http://cloc.sourceforge.net
                          October 1, 2011


New Languages:
    o CMake
    o Cython
    o Objective C++
    o Ocaml
    o Smarty

New options and features:

  --autoconf
      o Count files of recognized languages that end with ".in"
        (for example, code.h.in, Makefile.in) as used by GNU
        automake/autoconf.

  --match-d, --not-match-d
      o Include, or skip over, directories whose names match
        provided regular expressions.

  --follow-links
      o Follow symbolic links (on Unix-like OS's).

  YAML and XML output:  header lines now include the cloc URL,
  version, # lines and files counted, etc.

  YAML and XML output:  if writing to a file (rather than STDOUT),
  save the file name as an element inside the file.

  Include support for languages with double extensions.  First
  implementation of these uses .spc.sql for SQL Stored Procedures 
  and .data.sql as SQL Data as distinct from just SQL.

  Handle archive files (tar files, zip files, etc) with spaces
  in their names.

Bug Fixes:

  Lisp:  Include .lisp as a valid file extension.

  Correctly identify operating system as Windows if MKS Toolkit is 
  installed.

  Fix incorrectly handled .inc files (could be PHP or Pascal).

  --counted
      o Correct output to show only files which were actually
        used to produce the code count.  Also show the output
        by language rather than by filename.

  --diff
      o Fixed null output when one input has a single file while
        the comparison input has multiple files.
      o Fixed null output when no lines of code are modified in
        common files (only entire files were added or removed).
      o Handle cases where one of the two inputs is an empty
        file or directory.

  --diff + --exclude-file-list
      o --diff now skips files defined by --exclude-file-list

  --diff + --exclude-lang
      o --diff now skips languages defined by --exclude-lang

  --diff + --xml   
      o Include user-provided xsl file name in XML --diff output.
      o XML output for --by-file and --by-file-by-lang.
  
  --diff + --csv
      o Added comma separated value output for --diff.
  
  --diff + --sum-reports
      o Can now use the --sum-reports option with --diff.

  --exclude-dir
      o Quote metacharacters when comparing directory names against 
      --exclude-dir value.

  --strip-comments
      o Do not remove blank lines if they follow lines with
        (language-dependent) continuation markers.

  --sum-reports + --list-file
      o Allow the --sum-reports option to take its inputs from
        files defined by --list-file

Outstanding issues:
  --sql output formats remain unimplemented for --diff.

============================================================================
                Release Notes for cloc version 1.53
                   http://cloc.sourceforge.net

New Languages:
    o Go
    o MXML

New options:

  --lang-no-ext
      o Alternate method to count files without file
        extension.
  --ignore-case  
      o Works with --diff; treat uppercase and lowercase text
        as equivalent.

Bug Fixes:

  Pascal:  Add // as a comment marker.
  IDL:     Include .pro as a recognized file extension.

  --3:   
      o Correct XSLT style when running with --3.
  
  --diff:   
      o Implemented YAML output option.
      o Implemented XML output option.  Includes an optional
        default XSLT style file.
      o Include code/comment/blank counts of added files to  
        total added material and include code/comment/blank
        counts of removed files to total removed material.
      o Ignore unrecognized languages.
  
  --exclude-ext
      o Was inadvertently disabled in v1.52; works now.

Outstanding issues:
  --csv, --sql output formats remain unimplemented for --diff.

============================================================================
                Release Notes for cloc version 1.52
                   http://cloc.sourceforge.net

New Languages:
    o Groovy
    o Scala
    o XAML

New options:

  --exclude-ext 
      o Ignore files with the given file extension.
  
  --ignore-whitespace  
      o Works with --diff; ignore whitespace in code and comments
        when computing differences.

Bug Fixes:

  Fortran:  Treat line starting with an exclamation mark as a comment.
  Cobol:    Treat page eject directive and any line with characters
            in columns 1-6 as a blank line.
  
  --diff:   
      o Fix negative value of removed blank lines.
      o Better output column alignment when running with --by-file.
      o Bug fixes when dealing with fully qualified Windows paths.
  
  --exclude-list-file  
      o Can now also include directories to ignore in the supplied 
        input file.

Other Improvements:
    o Better logic to select the file whose name identifies it as
      containing source code when the file is one of several having 
      identical contents (for example, if main.c and main.c.bak have
      identical contents, choose main.c for counting instead of 
      main.c.bak, which would be rejected because the filename
      does not match any recognized language).
    o Contents of .hg/ (Mercurial) directories are ignored.
    o On Windows: Ignore case in file name extensions.
