Skip to content

Releases: Nurysso/eulix

Release v0.8.3

Choose a tag to compare

@github-actions github-actions released this 14 Oct 15:11
fc146bb

Eulix Release Notes

Eulix v0.8.3

This release focuses on parser architecture, memory efficiency, call graph visualization, and developer tooling. The parser has been split into a reusable Rust library and a CLI interface, while a new spill-to-disk architecture significantly reduces peak memory usage on large codebases.

Parser Architecture

  • Split eulix_parser into two components:
    • libeulix — A Rust library for parsing and code analysis.
    • eulix_parser — The command-line interface built around the parser.
  • Introduced a new spill-to-disk architecture to process large codebases with significantly lower memory consumption.
  • Integrated rpmalloc as the memory allocator, requiring changes to the parser's build configuration and flags.

Performance & Memory Efficiency

Benchmarked against a 37-million-line codebase:

  • Peak RSS reduced from ~8 GB to ~3.5 GB — approximately a 56% reduction.
  • kb.json reduced to ~350 MB, down from ~670 MB in the previous release.
  • The new architecture makes large-scale code analysis more memory-efficient and reduces the resources required to process large repositories.

Call Graph & VizEulize

  • Updated call_graph.json serialization to store function tags directly alongside the graph data.
  • VizEulize can now consume these tags to group functions and improve graph exploration.
  • Improved VizEulize's ability to handle large JSON datasets, with support for files up to 500 MB in the browser.
  • Further visualization and graph explorer improvements.

Eulix CLI

  • Added an experimental MCP server (Beta) with an adaptive retrieval cascade.
  • Improved the terminal UI (TUI), including styling refinements and internal cleanup.
  • Additional CLI improvements and bug fixes.

Eulix LSP (Alpha)

Introduced eulix-lsp, a language server that exposes the libeulix knowledge base through the Language Server Protocol (LSP).

Supports C, C++, Go, Java, JavaScript, Python, Rust, and TypeScript, bringing code intelligence backed by Eulix's static analysis.

Features

  • Navigation: Go to definition, workspace-wide references, and call hierarchy.
  • Code intelligence: Hover information, prefix-based completion, and document outline.
  • Editor support: Semantic tokens, document highlights, and folding ranges.
  • Workspace tools: Workspace symbol search and file watching.
  • Diagnostics: Syntax issues, duplicate definitions, TODOs, and security notes.
  • Rename: Renames symbols in open buffers, refusing ambiguous workspace matches.

Limitations

  • No code actions, formatting, signature help, or type-resolved hover.
  • Semantic tokens are symbol-level rather than full lexical highlighting.
  • JSX and TSX are not supported.
  • Document highlights are limited to the current file.
  • Go-to-definition returns a single deterministic result.
  • Syntax diagnostics provide line-level information rather than precise error ranges.

The language server is currently in Alpha and relies on information extracted by libeulix rather than performing independent, full semantic analysis.

Build & Installation

  • Updated parser build commands and required build flags following the allocator integration.
  • Updated the Makefile, README, and installation documentation.
  • Relicensed the project under Apache-2.0.

Experimental Features

  • MCP Server (Beta): Enables MCP-compatible clients to access Eulix retrieval capabilities.
  • Eulix LSP (Alpha): Introduced early language server functionality.

What's Changed

  • Makefile, readme and install doc updated by @Nurysso in #71
  • eulix_parser v0.8.0 architecture changes & vizEulize graph explorer enhancements by @Nurysso in #73
  • eulix_cli v0.8.3 update, and style changes by @Nurysso in #74
  • parser build command changes by @Nurysso in #75
  • relicensed to Apache-2.0 by @Nurysso in #76
  • Alpha eulix_lsp, and libeulix v0.8.2 by @Nurysso in #77
  • feat(mcp): add MCP server with adaptive retrieval cascade (beta) by @Nurysso in #78
  • [Refactor]: Tui updated and lint fixes by @Nurysso in #79
  • Dev by @Nurysso in #80

Upgrade Notes

  • Build configuration: Update your parser build commands and flags to match the new rpmalloc integration.
  • Parser architecture: Use libeulix when integrating parsing and analysis into Rust applications; use eulix_parser for command-line workflows.
  • Call graph consumers: Update tools consuming call_graph.json to account for the revised format and embedded function tags.
  • MCP server: The MCP integration is currently in Beta and may undergo further changes.

Eulix v0.8.3 delivers a more scalable parsing architecture, lower memory requirements, smaller knowledge-base files, and improved graph visualization for large codebases.

Full Changelog: v0.8.2...v0.8.3

Release v0.8.2

Choose a tag to compare

@github-actions github-actions released this 02 Oct 14:01
5d48082

Eulix Release Notes

Eulix CLI v0.8.2

This release focuses on retrieval performance, parser output reduction, query improvements, and internal cleanup.

Retrieval

  • ~67% reduction in kb.json size
  • Updated the retrieval parser to produce smaller files, improving retrieval speed and reducing peak memory usage without measurable loss in accuracy.
  • Updated the hydration algorithm for improved retrieval performance and data processing.
  • Optimized callers and callees queries by skipping unnecessary semantic-search processing.
  • 60-70% faster retrieval time due to smaller files to process

Query Improvements

  • Reworked MMR and introduced anchor pinning.
  • Refactored the monolithic query package into smaller modules.
  • Added dedicated classifier and router test suites.
  • Cleaned up and reorganized query-related symbols and components.

Extra

  • Project-wide configuration constants were moved into utils/constants.
  • Improved the TUI and fixed several bugs.
  • Deprecated the glados and aspirine modules.
  • Call relationships remain available through kb_call_graph.json.
  • checksum now reads directly from eulix_parser output instead of generating checksum.json.zst[this was done cause parser already have to walk the dir might as well generate checksums, this saves first run time].

Eulix_Parser v0.7.7

  • Reduced from 2.06 GB → 0.67 GB on the Linux kernel benchmark.
  • Reduced total filesystem write volume by 48.9% (end-to-end analyze pipeline).
  • Output phase improved from ~6.89s → ~4.08s.
  • Slight reduction in total wall-clock time.
  • kb.json now uses slimmed-down structures (FileDataSimple, FunctionSimple, ClassSimple) for serialization.
  • Unnecessary downstream fields are no longer written into kb.json.

Eulix Embed v0.4.1

  • Fixed linter issues and updated lint.sh to use Ruff for most linting.
  • Expanded the compare command from checking selected entries to verifying the entirety of embeddings.bin and vectors.bin.

[BETA] VizEulize — Call Graph Visualization

VizEulize is a new local HTML-based visualization tool for exploring Eulix call graphs.

Features

  • Local JSON loading

    • Load kb_call_graph.json and optionally kb_index.json through drag-and-drop or a file selector.
    • Files are processed locally and are not uploaded externally.
  • Filtering

    • Filter nodes by category and tag.

    • Filter relationships by direction:

      • Both directions
      • Callees →
      • ← Callers
    • Limit traversal depth to 1, 2, or 3 hops.

  • Interactive graph

    • Pan and drag around the graph.
    • Scroll to zoom.
    • Click nodes to inspect their details.
    • Double-click a node to isolate and focus on its immediate neighborhood.
  • Default view

    • Automatically highlights highly connected nodes when a dataset is loaded.
  • Reset

    • Restore the default layout, zoom level, and filters with one click.

Using VizEulize

The VizEulize HTML file is installed at:

$HOME/.Eulix/bin

For now, Eulix CLI does not automatically open or interact with the visualization tool.

To use it:

  1. Manually open the VizEulize HTML file from $HOME/.Eulix/bin.
  2. Generate/analyze your project with Eulix.
  3. Load:
.eulix/kb_call_graph.json
.eulix/kb_index.json

into VizEulize using the file picker or drag-and-drop.

The visualization currently operates entirely on the locally provided JSON files.

Note: Automatic CLI integration for launching/loading the call graph visualization is not available yet.

Full Changelog: v0.8.1...v0.8.2

Release v0.8.1

Choose a tag to compare

@github-actions github-actions released this 15 Sep 14:52

Release v0.8.0

Choose a tag to compare

@github-actions github-actions released this 31 Aug 11:33

What's Changed

Full Changelog: https://github.com/Nurysso/eulix/commits/v0.8.0