include/andlib/contain the core C++ headers and implementation of the Qore runtime.qlib/holds standard Qore modules (.qm,.qc) shipped with the language.modules/contains optional/binary modules (built separately from the core).examples/provides sample programs; tests live underexamples/test/as*.qtest.docs/anddoxygen/hold documentation assets.
- The runtime, compiler, and core tooling are implemented in C++ with headers in
include/and sources inlib/. - Standard library modules are Qore sources in
qlib/, loaded by the core at runtime. - Optional integrations live in
modules/(versioned separately). - Parser/AST tooling lives in
modules/astparser/;qlib/Qdx.qmanddoxygen/qdxuse it for docs. - When editing the core parser (
lib/parser.ypp,lib/scanner.lpp), mirror changes inmodules/astparser/src/.
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/usrconfigures the recommended CMake build.cmake --build buildbuilds the compiler, runtime, and tools.cmake --build build --target docsbuilds documentation (requires doxygen)../run_tests.shruns Qore tests fromexamples/test/(expects a builtqore/libqore)../run_tests.sh -d <subdir>runs a subset of tests, e.g../run_tests.sh -d http.
- C++ code uses 4-space indentation and braces on the same line; follow nearby file style.
- Qore sources typically opt into
%new-style; many files setindent-tabs-mode: nil. - File naming is consistent by type:
.cpp/.hfor C++,.q/.qm/.qcfor Qore,.qtestfor tests. - No formatter is mandated; keep changes minimal and match local conventions.
- Primary tests are Qore scripts under
examples/test/with the*.qtestsuffix. - Prefer adding tests alongside similar modules and keep naming descriptive.
- Use
QORE_TEST_OPTSand database env vars (for exampleQORE_DB_CONNSTR) when tests need external services.
- Commit messages use a short type prefix such as
fix:,feat:, orrefactor:in a present-tense summary. - Use
Revertfor rollbacks andMergewhen bringing in upstream branches. - Keep commits focused; include build/test commands run in the body when relevant.
- PRs should include a concise description, linked issues, and any required setup notes.
- Add screenshots or logs when changing CLI output.
- Avoid committing credentials; prefer environment variables for connection strings.