Aprenda a usar Crux en su proyecto.
Siga el ReadMe en el repositorio del proyecto en GitHub.
Lea la documentación de la API
Mire la charla introductoria en la reciente conferencia de Rust Nation 2023 en Londres.
También puede unirse a la conversación amistosa en nuestro canal Zulip.
Tenga en cuenta que Crux es experimental y actualmente está en desarrollo activo (probablemente aún no está listo para su uso en aplicaciones de producción). Sin embargo, la rama maestra siempre debe funcionar bien, e intentaremos mantener los ejemplos y la documentación actualizados a medida que avanzamos. Creemos que la API se ha establecido, ¡así que ten una jugada! :-)
El concepto arquitectónico fundamental es la separación estricta de las tareas computacionales puras de las tareas que causan efectos secundarios. Esto es similar a la forma en que trabaja Elm.
En el diagrama anterior, el "núcleo" interno se compila y se vincula a la "carcasa" externa en cada plataforma como una biblioteca:
De hecho, debido a que WebAssembly (WASM) es uno de los objetivos de compilación, el núcleo debe permanecer libre de efectos secundarios, debido a la naturaleza de sandboxed del entorno de tiempo de ejecución de WASM.
Como tal, el núcleo está completamente aislado y seguro contra los ataques de la cadena de suministro de software, ya que no tiene acceso a ninguna API externa. Todo lo que puede hacer es realizar cálculos puros y mantener el estado interno.
Después de la arquitectura ELM, el núcleo define los tipos de componentes clave dentro de la aplicación:
Event : una enum que describe los eventos que el núcleo puede manejarModel : describe el estado interno de la aplicaciónViewModel : representa la información que debe mostrarse al usuario Los dos primeros están unidos por la función update , familiares de Elm, Redux u otras arquitecturas de abastecimiento de eventos, que actualmente tiene esta firma de tipo:
fn update (
& self ,
event : Event ,
model : & mut Model ,
capabilities : & Capabilities ,
) El trabajo de la función update es procesar un Event , actualizar el modelo en consecuencia y potencialmente solicitar algunos efectos secundarios utilizando capacidades.
La plataforma Closing Native "Shell" está escrita utilizando el lenguaje apropiado para la plataforma, y actúa como el entorno de tiempo de ejecución dentro del cual se realizan todas las tareas que no se realizan. Desde la perspectiva del núcleo, el shell es la plataforma en la que se ejecuta el núcleo.
Después de la arquitectura ELM, la interfaz con el núcleo está basada en mensajes. Esto significa que el núcleo no puede realizar nada más que cálculos puros. Para realizar cualquier tarea que cree un efecto secundario (como una llamada HTTP o una generación de números aleatorios), el núcleo debe solicitarla desde el shell.
El núcleo tiene un concepto de capacidades, interfaces reutilizables para efectos secundarios comunes, que respalda el fuego y la olvida, la solicitud/respuesta y la semántica de transmisión.
La única capacidad incorporada es Render . Pero este repositorio contiene algunas capacidades en varias etapas de madurez, y puede escribir fácilmente su propio si desea:
Render (solicite a la interfaz de usuario que renderice la vista de visión)-fuente, incorporada a crux_core , solo soliciteHttp (implementación completa de HTTP basada en la API de Surf) - fuente, caja, solicitud/respuestaKeyValue (API de almacena de valor clave básico)-Fuente, caja, solicitud/respuestaTime (obtenga tiempo actual, notifique después de la duración, notifique en instante) - fuente, caja, solicitud/respuestaPlatform (obtenga la plataforma actual): fuente, caja, solicitud/respuestaSSE (eventos básicos de servidor): fuente, solicitud/transmisiónPubSub (submarino de pub con transmisión) - fuente, solicitud/respuesta/transmisiónTimer (inicio del temporizador, finalización, cancelación) - fuente, solicitud/respuesta/transmisiónDelay - Parte del tutorial en el libroRed Badger es la consultora de productos digitales confiables por Blue Chips y Global Brands. Nuestro diseño de productos y pedigrí técnico nos permiten crear productos digitales de alto impacto que desean los clientes. Utilizamos enfoques de ingeniería modernos para ofrecer cambios sostenibles. E incrustar capacidades digitales para alimentar la innovación continua.
Zulip es una aplicación de chat de equipo moderna de código abierto diseñada para mantener las conversaciones en vivo y asincrónicas organizadas.
Zulip Patrocinador Crux proporcionando nuestro servidor Zulip, ¡gracias Zulip!