Gemini has a habit of confabulating template parameters from its memory and from other mediawiki templates. I tried creating a Gem to disabuse it of this notion, but it is extremely persistent in making this stuff up. It explains to me that I have to manually instruct it every time not to do this, hence this boiler plate used on top of the gem I've created in gemini. Sigh. It's fine to have an eager summer intern (e.g. AI), but it's not so fine to have an eager summer intern that repeatedly ignores explicit instructions.
This document outlines a plan for extending the Language Server Protocol (LSP) to enable editors to obtain clang-query matcher strings for code at the cursor position. This feature will help developers generate matcher expressions that can be used as the basis for clang-tidy checks or standalone clang-query queries.
This document outlines a plan for creating a text input language to describe transformer library expressions (ASTEdits and associated components) that are passed to makeRule. This language would be analogous to clang-query's text input language for AST matchers, enabling declarative specification of code transformations.
- clang-query: Provides text-based matcher specification (e.g.,
match functionDecl())
This document outlines a comprehensive plan for implementing a configurable clang-tidy check that combines:
- AST Matching: Uses clang-query-style matcher expressions to select AST nodes
- Node Binding: Binds matched AST nodes to named identifiers
- Template Replacement: Uses Transformer's Stencil system for code generation
- Fix-it Generation: Generates suggested fix-its for matched code patterns
This check type enables users to define custom refactoring rules through configuration without writing C++ code.
The GitHub Actions Cache mechanism has been removed from vcpkg, so you can't use x-gha in VCPKG_BINARY_SOURCES
as a way to re-use built products from one build to the next anymore. I was using x-gha because the setup was
trivial for all platforms: just set a couple environment variables.
You can use NuGet packages to achieve the same purpose, although the setup is a little more complicated. Here's what I learned while setting this up for the first time for use with GitHub Actions.
The file vcpkg-configuration.json uses an existing vcpkg as the default registry;
this assumes vcpkg as a git submodule. The baseline value is the commit hash of
the vcpkg submodule. Update the hash as needed to reflect the actual version of the vcpkg
registry you've got checked out as a submodule.
Use a directory vcpkg-overlays to contain the overlay ports;
There are undocumented switches to the linker that will disassemble an object file:
link /dump /disasm /linenumbers /out:foo.asm foo.obj
Cribbed from an answer on this stackoverflow question
| { | |
| "version": 6, | |
| "cmakeMinimumRequired": { | |
| "major": 3, | |
| "minor": 23, | |
| "patch": 0 | |
| }, | |
| "configurePresets": [ | |
| { | |
| "name": "sibling-build-preset", |
| # run this script with sudo | |
| # From <https://askubuntu.com/questions/355565/how-do-i-install-the-latest-version-of-cmake-from-the-command-line> | |
| apt remove --purge --auto-remove cmake | |
| apt update | |
| apt install -y software-properties-common lsb-release && \ | |
| apt clean all | |
| wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null | |
| apt-add-repository "deb https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main" | |
| apt update | |
| apt install kitware-archive-keyring |