- Larva
- Herramientas
- Archivos de proyecto (.queen)
Archivos de proyecto (.queen)
El archivo de proyecto .queen - su sintaxis y cada bloque y clave - PROJ, BUILD, DEPS, SOURCES, FILES, RESOURCES y HIVE.
Cada proyecto tiene un archivo .queen en su carpeta. Ese archivo le da nombre al proyecto e indica cómo se compila, qué usa y cómo se publica. larva build y larva run lo leen, y el editor lo verifica, autocompleta sus claves y las explica al pasar el cursor por encima.
queen 1.0;
// A program with built-in data and files copied next to it.
chunk PROJ:
name: Res,
type: exe,
version: v2.0,
author: "Ana Pérez",
description: "A demo, with a comma"
chunk BUILD:
gc: refcount,
backend: x64,
optimization: 2,
output: out/Res.exe
chunk SOURCES:
exclude: drafts/**
chunk FILES:
copy: assets/**,
into: config
chunk RESOURCES:
embed: data/**
Sintaxis
- El archivo empieza con
queen 1.0;. chunk NAME:inicia un bloque (chunk). Sus entradas sonkey: value, separadas por comas o por saltos de línea.- Los valores sin comillas pueden ser
true/false, números (1.5,-3), versiones (v1.0.42), nombres (exe,refcount) o texto. Las comillas permiten usar comas dentro de un valor. - Una lista se escribe
[a, b, c]y puede ocupar varias líneas. //y/* … */son comentarios cuando inician una línea o van después de un espacio, así quehttps://…yTests/*.antson valores.- Las rutas son relativas a la carpeta del archivo
.queen. En los patrones,*y?coinciden dentro de una carpeta, y**, a través de carpetas. - Algunas claves (en
DEPS,FILES,RESOURCES) se pueden repetir.
PROJ
El proyecto: su nombre, tipo y versión.
| Clave | Valores | Qué es |
|---|---|---|
name |
MyApp |
El nombre del proyecto, y el de su ejecutable o biblioteca. |
type |
exe, library |
Si compila un programa o una biblioteca. |
version |
v1.0 |
La versión del proyecto. |
author |
My Organization |
Quién lo escribió. |
description |
texto | Qué es. Ponlo entre comillas si tiene comas. |
BUILD
Cómo se compila el proyecto. Las claves que se omiten toman los valores predeterminados de tu máquina (larva config) y, después, los propios de larva. Las opciones de la línea de comandos de larva build tienen prioridad sobre ellas.
| Clave | Valores | Qué es |
|---|---|---|
gc |
default, tracing, refcount, arena, manual, custom |
Cómo se administra la memoria. Consulta Memoria. |
gc.collector |
MyApp.Memory.Collector |
Con gc: custom: la clase del recolector propio del proyecto. |
backend |
llvm, x64, vm |
Qué compila el programa: LLVM, o el back end x86-64 propio de Larva. |
target |
native, wasm, windows-x64, linux-x64, linux-arm64, macos-x64, macos-arm64 |
Dónde se ejecuta: esta máquina, WebAssembly o una plataforma. |
optimization |
de 0 a 3 |
Nivel de optimización. |
cpu |
generic, native, x86-64-v2, x86-64-v3, x86-64-v4… |
El procesador para el que compila LLVM. native usa todo lo que tiene esta máquina; puede que el programa no arranque en un procesador más antiguo. |
stdlib |
una carpeta, o none |
La biblioteca estándar. |
output |
bin/MyApp.exe |
Dónde queda la compilación. Por defecto, bin/<name>.exe, o bin/<name>.dll si es una biblioteca. |
ignore |
[tests, drafts] |
Archivos o carpetas que quedan fuera de la compilación. |
reflection |
none, layout, full |
Cuánto describen los tipos de sí mismos en tiempo de ejecución. none conserva solo los nombres de los enums y hace que los programas grandes sean más pequeños y compilen más rápido. |
borrowcheck |
enforce, warn, off |
El verificador de préstamos: errores, advertencias o desactivado (sin referencias disponibles). |
unsafe |
allow, deny |
Si el código del proyecto puede usar unsafe y punteros. |
generics |
shared, specialize |
Si el código genérico se comparte entre los argumentos de tipo o se copia para cada uno. |
access.default |
public, private, internal, friendly, inherited, file |
El acceso de las declaraciones que no indican uno. |
DEPS
Lo que usa el proyecto. Cada clave puede aparecer cualquier número de veces.
| Clave | Ejemplo | Qué es |
|---|---|---|
package |
Acme/Json@^1.0 |
Un paquete de Hive: Author/Name, opcionalmente con una versión. Se instala con larva hive install. |
proj |
../Shared/Shared.queen |
Un proyecto que se compila junto con este: su archivo .queen o su carpeta. Debe ser una biblioteca. |
assembly |
bindings/SDL3.dll |
Una biblioteca de Larva compilada (.dll, o un .lva suelto), como las que escriben larva lib y larva bind: se compila contra ella y se enlaza, sin código fuente. |
larvaobj |
libs/Geometry.lvo |
Un objeto de Larva compilado, o una carpeta de ellos: se enlaza, no se vuelve a compilar. |
lib |
native/zlib.dll |
Una biblioteca nativa (.dll, .so, .dylib, .wasm) de la que el código importa funciones. Se copia junto a la compilación. |
chunk DEPS:
proj: ../Shapes,
package: Antril-Organization/SDL3@^3.5,
assembly: bindings/Zip.Bindings.dll,
lib: native/zip.dll
SOURCES
Qué archivos fuente pertenecen al proyecto. Por defecto, son todos los archivos fuente de un lenguaje instalado que están bajo la carpeta del proyecto, excepto las carpetas que tienen su propio .queen, las carpetas ocultas, y bin y obj.
| Clave | Ejemplo | Qué es |
|---|---|---|
include |
../Shared/** |
Más archivos fuente: un archivo, una carpeta o un patrón, incluso fuera de la carpeta del proyecto. |
exclude |
drafts/** |
Archivos o carpetas que quedan fuera. |
scan |
true, false |
Si se busca en la carpeta del proyecto. Con false, solo se compila lo que nombra include. |
FILES
Archivos que se copian junto a la compilación, como la configuración o los recursos gráficos. Las rutas conservan su posición dentro del proyecto.
| Clave | Ejemplo | Qué es |
|---|---|---|
copy |
assets/** |
Un archivo, carpeta o patrón para copiar. Se puede repetir. |
into |
data |
La carpeta, dentro de la carpeta de la compilación, a la que van las copias. |
Con el ejemplo del principio, assets/settings.json se copia en out/config/assets/settings.json.
RESOURCES
Archivos incluidos dentro del propio programa.
| Clave | Ejemplo | Qué es |
|---|---|---|
embed |
images/** |
Un archivo, carpeta o patrón. Cada archivo se nombra por su ruta dentro del proyecto: images/logo.png. |
El programa los lee con System.Resources:
import System;
Main()
{
Console.Write(Resources.ReadText("data/greeting.txt") ?? "missing");
loop (str name in Resources.Names())
Console.WriteLine(name);
}
Resources.Read(name) devuelve los bytes (u8[]?), Resources.ReadText(name) el texto, y Resources.Has(name) indica si existe.
HIVE
Cómo se encuentran los paquetes del proyecto y cómo se publica el proyecto. Consulta Paquetes con Hive.
| Clave | Ejemplo | Qué es |
|---|---|---|
provider |
antril.org/hive, https://…, file:../registry |
El registro de paquetes: una dirección web o una carpeta. Si se omite, se usa la configuración hive.provider de la máquina. |
package |
Acme/Json |
El nombre con el que se publica el proyecto. Por defecto, el author y el name de PROJ. |
license |
MIT |
La licencia con la que se publica, como nombre SPDX. |
publish |
compiled, source |
Si el paquete lleva solo el código compilado (la opción predeterminada y la más liviana) o también sus fuentes. |
sign |
keys/hive.key |
La clave privada que firma los paquetes publicados, generada con larva hive key. |
verify |
strict, hashes |
Cómo se verifican los paquetes instalados: firmas y hashes (strict, la opción predeterminada), o solo hashes. |
cache |
.hive |
Dónde se guardan los paquetes instalados. Por defecto, en la caché de Hive del usuario. |
private |
true, false |
true: el proyecto nunca se publica. |
Editar esta página en GitHub Reportar un problema