Archivos de proyecto (.queen)

El archivo de proyecto .queen - su sintaxis y cada bloque y clave - PROJ, BUILD, DEPS, SOURCES, FILES, RESOURCES y HIVE.

Última actualización: 7 min de lectura Editar en GitHub

En esta página

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
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 son key: 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í que https://… y Tests/*.ant son 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.
.queen
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:

AntrilRun
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.

¿Te resultó útil esta página?

No se guarda ninguna dirección; tu nombre de usuario sí, si iniciaste sesión.

Esc