Skip to content

Releases: universal-ctags/ctags

Universal Ctags 6.2.1

25 Oct 13:19

Choose a tag to compare

This release fixes some critical bugs reported/found after releasing
6.2.0.

commit 5445a348f290450b3f230cce221a8d5fe9a35f4a
Author: BernΓ‘t GΓ‘bor <[email protected]>
Date:   Fri Oct 24 08:51:57 2025 -0700

    R6: fix valgrind error

    Signed-off-by: BernΓ‘t GΓ‘bor <[email protected]>
    (cherry picked from commit 2bfc47b01e1e51ad38bbd9485bf0b0486b2ae42b)

commit 466bf9b416415ef0068c29858e2bf1620acc91aa
Author: BernΓ‘t GΓ‘bor <[email protected]>
Date:   Fri Oct 24 07:46:41 2025 -0700

    tokeninfo: fix null pointer crash in tokenDelete function

    The tokenDelete() function in main/tokeninfo.c was being called with NULL
    pointers from the R6 parser error handling code, causing segmentation faults.

    The R6 parser in parsers/r-r6class.c had a comment stating "tokenDelete
    accepts NULL" but the function did not actually handle NULL pointers safely.
    This occurred when parsing malformed R6 syntax such as:
    - R6::SomethingElse() (wrong function after R6 namespace)
    - R6:: (incomplete namespace reference)
    - R6::R6Clas() (typo in R6Class)

    The fix ensures ctags handles malformed R6 syntax gracefully by falling back
    to parsing assignments as regular global variables instead of crashing.

      Fixes segmentation fault when processing certain R6Class syntax patterns.

    Signed-off-by: BernΓ‘t GΓ‘bor <[email protected]>
    (cherry picked from commit a60763cfdba6d0744836a1ebab48d19e0d7cf4fe)

commit bc67b9257c60b8abaf567a4ec661fc75bdf32cfa
Author: Colomban Wendling <[email protected]>
Date:   Fri Jul 25 00:36:26 2025 +0200

    ada: Fix crash with `is` at EOF

    Fixes #4284.

    (cherry picked from commit 33d1d1b493464dab35b71f09e9d308f97c65e58e)

commit 0869fb8ec78634f1cd199b5676231e94111e3ddf
Author: Masatake YAMATO <[email protected]>
Date:   Sat Sep 27 02:36:20 2025 +0900

    Cxx: limit recursion when parsing too deep blocks

    Fixed #4292.

    Signed-off-by: Masatake YAMATO <[email protected]>
    (cherry picked from commit 0be19d0fc565f1bda46e76c11b3b2fc8a4c7bbee)

commit 4a7d896424838bf8bb5e04037bd6918305b64e09
Author: Masatake YAMATO <[email protected]>
Date:   Tue Jun 3 02:16:23 2025 +0900

    fixup! C++: Update the parser version to 2.2

    In d469bf986acc7837514680434e90bc6087fe2827, I forgot to update
    versionCurrent and versionAge member of the parser.

    (This means the parser versioning of ctags-6.2 is broken.
    I must backport this change to ctags-6.2 and release 6.2.1.)

    Signed-off-by: Masatake YAMATO <[email protected]>
    (cherry picked from commit 556fc03c340eb0e1ef45e1e6aafbfdbb0bd2b086)

commit 3805034ceece73c295e87c0ef5f12e02995ab0e0
Author: Masatake YAMATO <[email protected]>
Date:   Sat Jul 26 01:25:21 2025 +0900

    circleci: use fedora:42 for cross-build tests targeting aarch64

    Signed-off-by: Masatake YAMATO <[email protected]>
    (cherry picked from commit 21769fe58d8aa6a05f7f6f2941e06ddff5a6da68)

v6.2.0...v6.2.1

Universal Ctags 6.2.0

01 Jun 05:50

Choose a tag to compare

This page lists only the most significant changes as remembered. Use
git-log to review changes not enumerated here, especially in language
parsers.

New and extended options and their flags

--list-output-formats option

See :ref:option_listing in :ref:ctags(1) <ctags(1)>.

nulltag/z extra

Universal Ctags now supports tags (null tags) having empty strings as their names.
See :ref:extras in :ref:ctags(1) <ctags(1)>.

NOTE:

  • libreadtags and readtags do not support the null tags yet.
  • Only json and xref output formats support the null tags.

Incompatible changes

  • [readtags] make -Q,--filter not work on ptags when -P,--with-pseudo-tags is specified together

    With this version, -Q,--filter option doesn't affect the pseudo tags listed
    with -P,--with-pseudo-tags option. -Q,--filter option specified wth
    -P,--with-pseudo-tags option affect only regular tags.

    To extract speicifed pseudo tags, use -Q,--filter option with
    -D,--list-pseudo action.

Parser related changes

#4026
Integrate pegof <https://github.com/dolik-rce/pegof>_ to our build process.

New parsers

The following parsers have been added:

  • SELinuxIntefae M4 based subparser

  • SELinuxTypeEnforcement optlib

  • PythonEntryPoints subparser

  • Scdoc optlib

  • JNI subparser

  • TypeSpec parser

    • TypeSpec by Kaisheng Xu Β· Pull Request #4243

NOTE: We added a TOML as a new parser in this version. However,
after adding it, we learned its implementation didn't work
entirely. So we deleted the TOML parser, and Cargo subparser
runs on the TOML parser from this "New parsers" list.
See TOML: infinite loop <https://github.com/universal-ctags/ctags/issues/4096>__
about how it doesn't work.

Changes about parser specific kinds, roles, fields, and extras

  • C++

    • New kinds module and partition
    • New roles imported and exported for header kind
  • Clojure

    • New kind unknown
    • New field definer
  • EmacsLisp

    • New field definer
  • LEX

    • New role grouping for cond kind
  • Lisp

    • New kinds class, generic, method, parameter, struct, and type
  • Make

    • New extra CppDef
  • Meson

    • New kinds cfgdata and cfgvar
  • PowerShell

    • New kind enumlabel
  • Python

    • New role entryPoint for module and function kinds

      PythonEntryPoints parser emits tag entries having this role.

  • Scheme

    • New kind unknown
    • New field definer
  • SCSS

    • New kind module
    • New role used for the module kind
    • New kind namespace
    • New field module
  • SQL

    • New kind local
  • Vim

    • New kind heredoc
    • New kind class

Readtags

  • make formatter work with -D,--list-pseudo-tags option

    An example extracting the value of !_TAG_PROC_CWD:

	 $ ./readtags -t podman.tags -Q '(#/.*CWD.*/ $name)' -F '(list $input #t)' -D
	 /home/yamato/var/ctags-github/
  • make -Q,--filter not work on ptags when -P,--with-pseudo-tags is specified together

What's Changed

Read more

Universal Ctags 6.1.0

28 Dec 15:52

Choose a tag to compare

What's Changed

Read more

Universal Ctags 6.0.0

15 Dec 18:01
3af4135

Choose a tag to compare

New Contributors (Generated by Git Hub)

Full Changelog: https://github.com/universal-ctags/ctags/commits/v6.0.0