Heim > Backend-Entwicklung > C++ > Wombat – Syntaxhervorhebung mit Rust's Bat aus Crystal

Wombat – Syntaxhervorhebung mit Rust's Bat aus Crystal

Barbara Streisand
Freigeben: 2025-01-16 14:04:58
Original
297 Leute haben es durchsucht

Wombat - Syntax Highlighting with Rust

Einführung

In diesem Artikel geht es um die Verwendung des auf Rust basierenden Befehlszeilentools bat als Bibliothek in Crystal, einer Sprache, der es derzeit an einer robusten Syntaxhervorhebungsbibliothek mangelt. bat zeigt ähnlich wie cat Dateiinhalte an, bietet jedoch erweiterte Funktionen wie Zeilennummerierung, Syntaxhervorhebung und Paginierung.

<code>bat hello.rb</code>
Nach dem Login kopieren
Nach dem Login kopieren

Durch die Nutzung bat als Bibliothek wird diese Crystal-Einschränkung behoben.

batals Rust-Bibliothek

Die

-Struktur von batPrettyPrinter ermöglicht die Verwendung als Rust-Bibliothek. Allerdings stellte die Abhängigkeit von bat auf die komplexe Syntect-Bibliothek zur Syntaxhervorhebung zunächst eine Herausforderung dar. Um dies zu vereinfachen, wurde print_with_writer eine PrettyPrinter-Funktion hinzugefügt, die eine direkte Hervorhebung der Zeichenfolgensyntax ermöglicht. Dieser Zusatz wurde über eine Pull-Anfrage beigesteuert und ist ab bat Version 0.25.0 verfügbar.

<code class="language-rust">use bat::PrettyPrinter;

// ... code utilizing print_with_writer ...</code>
Nach dem Login kopieren

Erstellen eines C-Wrappers: bat-c

Da Rust-Bibliotheken nicht direkt von Crystal aus aufgerufen werden können, wurde eine schlanke C-Wrapper-Bibliothek bat-c erstellt. Dies ermöglicht den Zugriff auf bat von Crystal und anderen Sprachen mit C-Interoperabilität. Bei der Entwicklung von bat-c wurden ChatGPT und Copilot aufgrund der begrenzten Rust- und C-Kenntnisse des Autors stark genutzt. Das bat-c Repository ist verfügbar unter: https://www.php.cn/link/065982e894fcde21153454b2ea4b2a8a

Zu den wichtigsten Überlegungen beim Bau bat-c gehörten:

  • Speicherverwaltung: Sorgfältiger Umgang mit der Zuweisung und Freigabe von String-Speicher, um Lecks zu verhindern. Rust-zugewiesener Speicher erfordert entsprechende Rust-seitige Freigabefunktionen.
  • Cargo.toml-Konfiguration: Konfigurieren von Cargo.toml, um sowohl dynamische (cdylib) als auch statische (staticlib) Bibliotheken zu generieren, was eine flexible Nutzung ermöglicht. rpath = true ermöglicht den relativen Pfad der Bibliotheksposition. Optimierung des Release-Profils mit LTO und codegen-units = 1.
  • Versionierung: Eine Versionsfunktion (bat_c_version) wurde hinzugefügt, die die Version für einen einfachen Zugriff im statischen Speicher speichert.
  • Renovate-Integration: Renovate wurde für automatisierte Bibliotheksversionsaktualisierungen implementiert.
  • GitHub-Aktionen: Automatisierte Veröffentlichung wird bei der Git-Tag-Erstellung ausgelöst. cargo publish wurde vermieden, da bat-c eine reine C-Bibliothek ist.

Anruf bat-c von Crystal: wombat

Eine Crystal-Bibliothek, wombat, wurde entwickelt, um die Interaktion mit bat-c zu vereinfachen. Die größte Herausforderung bestand darin, den Download und die Platzierung der bat-c Bibliothek zu verwalten. Da bat-c noch nicht weit verbreitet ist, wurde ein direkter Download von GitHub Releases gewählt. Aufgrund der nahtlosen Integration mit Crystal wurde eine statische Bibliothek bevorzugt. Der Download-Vorgang wird über einen shards post_install-Hook abgewickelt, der curl (Unix-ähnlich) oder ein Batch-Skript (Windows) verwendet.

Anwendungsbeispiele

Die wombat-Bibliothek bietet Funktionen für:

  • pretty_print_file: Syntax zum Hervorheben einer Datei.
  • pretty_print: Syntax, die eine Zeichenfolge hervorhebt.
  • pretty_string: Gibt eine hervorgehobene Zeichenfolge zurück.
<code>bat hello.rb</code>
Nach dem Login kopieren
Nach dem Login kopieren

GitHub Actions Workflow

Wombat - Syntax Highlighting with Rust

Bereiche mit Verbesserungspotenzial

  • Bibliotheksgröße: Die generierte Bibliothek ist relativ groß.
  • API-Design: Die API könnte von einem verfeinerten Design profitieren, idealerweise unter Berücksichtigung der C-Kompatibilität aus der ursprünglichen Rust-Entwicklung.
  • Rust/C-Expertise:Verbesserte Rust- und C-Kenntnisse würden zu einer effizienteren und ausgefeilteren Bibliothek führen.

Trotz dieser Bereiche mit Verbesserungsbedarf erreicht das Projekt erfolgreich sein Hauptziel: die einfache und wartbare Nutzung von bat innerhalb von Crystal zu ermöglichen. Der Autor freut sich über Beiträge und Problemberichte.

(Original japanischer Beitrag auf Qiita: Wombat - RustのBatをCrystalから呼び出しシンタックスハイライティングする. Englische Übersetzung von ChatGPT.)

Das obige ist der detaillierte Inhalt vonWombat – Syntaxhervorhebung mit Rust's Bat aus Crystal. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage