Deno 2.0

Rate this content
Bookmark

Deno 2.0 está a punto de llegar y trae consigo grandes cambios para el entorno de ejecución de JavaScript. En esta charla, presentaremos las nuevas características, incluyendo mapas de importación, auto-descubrimiento de package.json y especificadores desnudos. Discutiremos cómo estas mejoras ayudarán a abordar problemas como las dependencias duplicadas y las dependencias que desaparecen. Además, profundizaremos en el soporte incorporado para los especificadores de deno en el registro deno.land/x y su papel en proporcionar un camino recomendado para la publicación. Ven a aprender cómo estas actualizaciones darán forma al futuro del ecosistema de JavaScript y mejorarán la compatibilidad con las aplicaciones Node.

Ryan Dahl
Ryan Dahl
36 min
14 Apr, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

La charla discute la optimización forzada con Node y Deno, con Deno buscando perseguir los mismos objetivos de una manera más expansiva y moderna. Deno tiene soporte incorporado para NPM y aplica restricciones de seguridad. También tiene una base de datos de clave-valor llamada Deno KV, que será una parte central de la API de Deno 2. Deno Deploy es una plataforma de funciones Edge sin servidor impulsada por FoundationDB, optimizada para una lectura rápida e ideal para la construcción de sitios de comercio electrónico o servidores de aplicaciones en el borde. Deno 2.0 llegará pronto con más características en desarrollo.

Available in English

1. Optimización forzada con Node y Deno

Short description:

Mi charla trata sobre la optimización forzada, el objetivo original con Node era obligar a los desarrolladores a construir servidores óptimos fácilmente utilizando IO asíncrono. Hoy en día, construir servidores óptimos requiere más que solo IO asíncrono. Con Deno, el objetivo es continuar persiguiendo los mismos objetivos pero de una manera más expansiva y moderna. El sistema necesita ser máximamente accesible, tener una excelente latencia y ser sin servidor.

Mi charla no se llama Dino 2.0, se llama optimization forzada. Hay un truco que haces cuando te postulas para charlas en conferencias donde das un título y alguna descripción y la noche anterior lo inventas mientras avanzas.

Sí, Node es bastante antiguo en este punto. Quizás 13, 14 años. Mi objetivo original con Node era obligar a los desarrolladores a construir servidores óptimos fácilmente obligándolos a usar solo IO asíncrono. No es 100% cierto. Hay IO sincrónico en Node, pero en gran medida, al menos con IO de red, estás obligado a usar IO no bloqueante. Esto es realmente estándar en estos días. Esencialmente, cualquier plataforma está haciendo uso de IO no bloqueante. Pero en 2008, este no era el caso. Había muchas personas escribiendo servidores de IO bloqueantes y enhebrados.

Hoy en día, construir servidores fácil y óptimamente requiere más que solo IO asíncrono. Hay mucho que entra en esto. Estás gestionando configuraciones de cloud. Estás eligiendo una database. Estás pensando en cómo los data podrían replicarse en todo el mundo. Especialmente si estás usando Node, estás navegando por una plétora de cadenas de herramientas y flujos de trabajo que pueden o no funcionar bien juntos. Estás lidiando con la cadena de suministro de security. Solo hacer IO no bloqueante no te lleva todo el camino. Con Deno, el objetivo es realmente una continuación de este objetivo original, pero un poco más expansivo y moderno. Deno continúa la búsqueda de los mismos objetivos, pero pensando en esto de manera holística como un servicio que estás construyendo y desplegando en una cloud pública. Para lograr esto, hay ciertos requisitos que creo que son obvios. En primer lugar, estoy interesado en construir sistemas que sean máximamente accesibles, que tengan una base de desarrolladores muy grande. Por eso JavaScript. JavaScript no es necesariamente el mejor lenguaje en la tierra, pero es el más accesible lenguaje en la tierra. Este sistema necesita tener una excelente latencia en todas partes. Ya sea que accedas al sistema desde Japón o desde la ciudad de Nueva York, no deberías ser penalizado por donde te encuentres en el mundo. Este sistema debería, no sé si estás de acuerdo con esto, pero el sistema debería ser serverless. Quieres cosas que scale hasta cero y scale hasta lo grande que sea necesario. Esto es un gran problema en estos días es que hay mucha configuración que entra aquí.

2. Deno: Marcos, Seguridad y Compatibilidad

Short description:

Estás lidiando con Terraform, archivos de configuración y marcos en Deno. El objetivo es reducir el código repetitivo y mejorar la seguridad. Deno 2.0 está en desarrollo y tiene como objetivo abordar problemas de compatibilidad con Node. Deno proporciona un aviso para el acceso al sistema de archivos y adopta una postura firme sobre los especificadores de importación. Los módulos integrados de Node están disponibles en Deno.

Estás lidiando con Terraform, estás lidiando con varios archivos de configuración de todas las posibles bibliotecas. Estás lidiando con mucho código repetitivo, muchos frameworks. ¿Qué son los frameworks de todos modos? Es solo código repetitivo que de alguna manera estableces con anticipación para empezar a funcionar. Queremos reducir eso tanto como sea posible para avanzar a las personas.

Debería estar asegurado por defecto, ¿verdad? JavaScript es un gran lenguaje para la security porque en realidad es un sandbox y tiene la capacidad de restringir a las personas para que no accedan al sistema subyacente. Deno está intentando cumplir con estos requisitos y cada vez se acerca más a esto. Deno 2.0 saldrá este verano y estamos trabajando hacia esto, ¿verdad? Estamos pensando en esto en términos de cómo construir servicios óptimos en la cloud, servidores óptimos.

Quiero repasar algunos aspectos de esto y algunas características de Deno 2.0 que están en desarrollo y demostrarlas, y simplemente darles una idea de cómo funciona esto. Entonces, en primer lugar, Deno, cuando comenzamos hace un par de años, estaba muy en paralelo a Node. Y esto ha sido difícil para las personas adoptarlo. Porque gran parte del ecosistema de JavaScript depende de las bibliotecas de NPM, depende de las APIs de Node y la implementación de estos módulos integrados es relativamente importante para que las personas se pongan en marcha rápidamente.

Entonces sí, permíteme intentar demostrar algo de esto. ¿Es visible? Ok. Entonces builtin.js. Y puedes importar readfilesync desde node colon fs. Y puedes readfilesync, digamos, algún archivo. Etsy password en realidad no tiene ningún detalle nefasto en estos días, pero aún así es un buen ejemplo de security. Así que simplemente registremos este archivo aquí. Entonces, cuando ejecutamos esto con Deno, por supuesto, la gran cosa de Deno es que no hay security por defecto. No hay acceso al sistema por defecto, más bien. Y cada vez que intentas acceder al sistema de archivos, vas a obtener un aviso. Y lo que me está preguntando aquí es, ¿quieres permitir esto? Y puedes decir, no, no lo hago, en cuyo caso el programa va a fallar. O puedes decir, sí, quiero eso, en cuyo caso obtienes este buffer. En Node, probablemente estés acostumbrado a esto sin un especificador de Node. Y Node en estos días está animando a las personas a usar el esquema de Node en ese especificador de importación. Deno adopta una postura firme aquí en que no vamos a tener estos especificadores de FSBear y demás. Así que esto induce un poco de incompatibilidad con Node. Pero creo que por una buena razón, ¿verdad? Esto no es demasiado grande y te da un mensaje de error agradable que te dice qué hacer. Así que espero que no sea demasiado confuso para las personas. Así que tenemos Node integrado en los módulos de Node.

3. Soporte de Deno para NPM y compatibilidad

Short description:

Deno tiene soporte incorporado para NPM, lo que permite a los desarrolladores acceder al ecosistema de JavaScript y hacer uso de los módulos. Deno actúa como el cliente NPM integrado directamente en Node, proporcionando una profunda compatibilidad y soportando complementos con la API de Node. Sin embargo, Deno impone restricciones de seguridad para bloquear el acceso a la red y al disco. Aunque Deno implementa los módulos common.js y la semántica del package.json, fomenta el uso de ECMAScript y prohíbe el uso de require. Veamos una demostración de esto codificando un servidor express y ejecutándolo en Deno.

Acabo de mostrar el módulo FS, pero la capa de compatibilidad es bastante robusta en este punto. NPM es como este complemento para Node que creó Isaac Schluter. Y siempre ha habido una especie de tensión entre Node en sí y NPM. Pero está claro que todo el ecosistema de JavaScript está en NPM y es muy útil poder acceder a ese ecosistema y hacer uso de los módulos. Y por esa razón, Deno ahora tiene soporte incorporado para NPM.

Deno, piénsalo como el cliente de NPM integrado directamente en Node. Puede ir y descargar esos paquetes, en realidad no crea una carpeta local de módulos de Node. Es una compatibilidad bastante profunda, incluso soporta cosas como complementos con la API de Node. Impone estas seguridad restricciones, así que si ese paquete de NPM está intentando acceder a la red o acceder al disco, eso va a ser bloqueado por el sistema de permisos de Deno. El ecosistema de NPM, cuando empiezas a mirarlo, tiene mucho código antiguo por ahí, muchos common.js, muchas semánticas extrañas alrededor del package.json. Deno implementa todo eso, pero está muy oculto detrás de este especificador de NPM tan lindo. No puedes usar realmente common.js como desarrollador de Deno. Estamos muy firmes en que todo debería ser ECMAScript ahora, y no puedes usar require. Pero cuando realmente te adentras en este ecosistema, te adentras a través de este portal de especificador de NPM, internamente, en realidad está cargando módulos common.js y haciendo cosas bastante locas para hacer esto posible.

Así que como demostración de esto, permíteme codificar un pequeño servidor express aquí, y ejecutarlo en Deno. ¿Eso sigue siendo visible? Sí. Haré esto. Ups. Y perdona mi vimming aquí. Soy extremadamente viejo y cascarrabias con estas cosas. Así que importa express desde NPM colon express. Esto es más o menos todo lo que necesitas aquí. Y solo un poco de código de arranque. Vas a express, y eso te da una aplicación, y luego puedes hacer app.get. Y si obtienes la raíz slash, entonces obtienes una solicitud y una respuesta blah blah blah. Vale, y luego puedes hacer response send creo. Sí, envía hola, quizás con una nueva línea. Y supongo que tienes que escuchar en el puerto 3000, y siempre es bueno consultar algo en el registro, de lo contrario es un poco confuso. Así que esto va a estar funcionando en localhost 3000. Bien, así que ahora tengo algo que va a estar usando algunos common JS bajo el capó, ¿verdad? Express es relativamente antiguo y veamos cómo se ejecuta esto en Deno.

4. Instalación de NPM en Deno y característica de Deno KV

Short description:

Voy a ejecutar 'deno run express' para mostrar cómo Deno maneja los módulos de NPM. Es rápido, transparente y proporciona permisos de seguridad de forma gratuita. Deno KV es una base de datos de clave-valor avanzada y secreta incorporada en Deno.

Así que simplemente voy a hacer deno run express. Verás que está intentando acceder al CWD. Creo que esto es algo dentro de Express. Tal vez leyendo argv o algo así. Tenemos que permitir el acceso para eso. También está intentando leer las variables de entorno. No estoy seguro de por qué Express está intentando leer las variables de entorno. Tal vez para node end o algo así. Pero permitamos eso. Y luego está intentando obtener acceso para ejecutar el servidor en el puerto 3000. Así que lo permitiremos.

Y finalmente tenemos nuestro pequeño servidor web en funcionamiento que está utilizando Express bajo el capó. Y como puedes ver, no hay una carpeta de modules de node. Todo esto se instaló automáticamente. Así que si sabes lo que vas a hacer, puedes decir allow read. Puedes permitirle leer cosas en el directorio local. Puedes permitir net y permitir env para eludir esas solicitudes. Y voy a añadir este indicador de recarga sólo para que puedas ver cómo descarga estos NPM modules. Afortunadamente, el Wi-Fi está funcionando. Genial. Así es como se ve una instalación de NPM en Deno. Es completamente transparente. Sucede muy rápido en segundo plano. Y funciona así. Y obtienes los permisos de security de forma gratuita. Así que esto está haciendo que Deno sea más accesible y nos acerca más a este objetivo de construir servidores, construir servicios en la cloud que puedes simplemente elaborar en un par de segundos.

Hay una nueva característica en Deno de la que aún no hemos hablado. Y tendrás que mantenerla en secreto porque aún no se ha anunciado. Pero tenemos una característica llamada Deno KV. Y esta es una base de datos de clave-valor bastante advanced que está incorporada directamente en Deno.

5. Base de datos de clave-valor de Deno (Deno KV)

Short description:

Deno tiene una base de datos de clave-valor incorporada llamada Deno KV. Te permite almacenar objetos JavaScript y realizar operaciones de clave-valor como obtener, establecer, listar y eliminar. Deno KV admite transacciones atómicas y está incorporado en la CLI y respaldado por SQLite. Será una parte central de la API de Deno 2, facilitando la construcción de servidores de aplicaciones con un modelo de clave-valor.

Te permite almacenar objetos JavaScript. Tiene operaciones normales de clave-valor como obtener, establecer, listar, eliminar. Tiene transacciones atómicas. Y hablaré un poco más sobre eso. Solo diré que es relativamente avanzado en ese aspecto. Y realmente está incorporado en la CLI y respaldado por SQLite.

Entonces, esto ya está en Deno. Está detrás de una bandera inestable porque todavía está en desarrollo. Pero cuando se lance Deno 2 en un par de meses, esto va a ser una parte central de la API. Y la idea es que puedes empezar a construir servidores de aplicaciones. Tal vez no cosas que realmente requieran muchas relaciones y una gran cantidad de datos. Pero creo que muchas aplicaciones encajan bastante bien en un modelo KV como este, especialmente uno que es consistente y tiene transacciones.

Entonces, déjame demostrar eso un poco. Y déjame usar VS Code para este solo para tener algo de runDeno en él. Y la memoria muscular siempre es VIM. OK, entonces he generado automáticamente algo de código base aquí. Por cierto, OK, me abstendré de comentar sobre eso. Estoy usando VS Code para la finalización de tipos y cosas con esta API kv. Entonces, la forma en que esto funciona es que haces dno.openkv. Y esto toma un wait. Y está en rojo aquí porque esta es una API inestable. Y entonces necesito hacer inestable. No tendrás que hacer esto una vez que esto esté funcionando. Y lo que esto te da es una referencia a esta base de datos. Y vamos a hacer un console log de esto. Por cierto, ¿esto es visible? Deberían avisarme si esto es completamente ininteligible. Y terminal. Justo aquí. OK, entonces dno run main. Oops, main ts.

6. Uso del almacenamiento de clave-valor en Deno

Short description:

Esta sección cubre cómo usar el almacenamiento de clave-valor en Deno, donde la clave es un array de JavaScript. Demuestra cómo establecer y obtener valores, sin necesidad de permisos. La base de datos predeterminada de Deno está respaldada por SQLite.

Entonces, de nuevo, esto está detrás de una bandera inestable. Así que si lo estás ejecutando sin nada, va a fallar. Tienes que proporcionar este inestable. Pero sí, ahora está abierto a la database. ¿Y qué? Así que vamos a construir un poco este ejemplo. Así que kv set. Y la clave para esto, esto es un almacenamiento de clave-valor. Así que hay una especie de espacio de claves jerárquico. Y la clave es un array de JavaScript, en realidad. Y en lugar de serializar una cadena con barras incluidas, esto se vuelve relativamente complicado. Simplemente usamos un array aquí. Así que vamos a fingir que estamos creando una tabla de usuarios. Y Alice, creo, es mi ejemplo. Así que vamos a establecer usuarios / Alice. Y el valor va a ser algo, algún objeto de JavaScript, ¿verdad? Y si esperamos eso, entonces habremos establecido esto. Y por supuesto, puedes obtener esto con kv.get. Y simplemente tomaremos esa clave. Y voy a hacer un console.log de esta x aquí, borro esta. Así que, ahora hemos extraído este objeto Alice. Verás que hay esta marca de versión allí. Eso es un poco interesante. Entraremos en eso. Pero creo que otra cosa a tener en cuenta aquí es que no se necesitan permisos. Hay una especie de database predeterminada aquí, y puedes configurar esto para almacenarlo en un archivo. Localmente, esto está respaldado por SQL lite. Así que estos están realmente almacenados en una database SQL lite.

7. Actualización del Contador en el Servidor Deno

Short description:

Permíteme expandir el ejemplo en un servidor que cuenta las solicitudes. Actualizaremos un contador para demostrar el objeto transaccional. Configura un servidor web utilizando la API de servidor incorporada de Deno. Ejecuta el servidor y maneja el acceso a la red. Define una clave 'contador' para almacenar el entero. Usa 'kv atomic mutate' para actualizar el contador.

Así que permíteme expandir este ejemplo un poco más en un servidor que cuenta cuántas visitas, cuántas solicitudes han llegado al servidor. Así que simplemente estamos actualizando un contador. El propósito de esto es demostrar este objeto transaccional, esta transacción aquí.

Así que sí, lo que vamos a hacer, permíteme modificar mi ejemplo aquí. Así que en lugar de establecer una tabla de usuarios aquí. Bueno, en primer lugar, permíteme configurar un servidor. Así que importa serve desde HGPS, ups. dno.land std HGPServer.ts. Así que esta es la API de servidor incorporada de Deno. Y esto toma una solicitud, y devuelve una respuesta. Devuelve una nueva respuesta. Las demostraciones siempre son mucho más difíciles cuando estás de pie frente a un montón de gente como esta. Respuesta. Ahí vamos. OK, así que esto configura un pequeño servidor web. Y vamos a comentar estos bits aquí. Y simplemente ejecutaremos esto. Y ahora que estoy ejecutando esto, está pidiendo acceso a la red. Así que para no tener que hacer esto cada vez, hagamos simplemente permitir la red. OK, ahora está escuchando en el puerto 8,000. Y podemos hacer curl al local host 8,000. Y obtenemos hola. Genial. Quizás lo hagamos un poco más pequeño. OK. Así que lo que queremos hacer ahora es actualizar este contador. Así que vamos a almacenar esto. Simplemente definamos esta clave como contador. Aquí es donde vamos a almacenar este entero.

8. Incrementando el Contador y Construyendo una Plataforma

Short description:

Estamos incrementando un valor de contador usando kv atomic mutate. El valor se recupera de forma asíncrona y se registra. El contador se mantiene incluso después de reiniciar el programa. Esto demuestra una aplicación con estado sin dependencias ni una base de datos. Estamos construyendo una plataforma para aplicaciones reales que se ejecutan en todo el mundo.

Y lo que haremos es decir kv atomic mutate. Y aquí diremos que el tipo es sum key, y luego el valor va a ser un poco complicado aquí, pero solo ten paciencia conmigo. Nuevo Dino kv UN64. Y simplemente ignoremos lo que eso significa por el momento. Y confirmaremos eso, confirmaremos esa transacción y esperaremos eso. Y se está quejando porque no tengo un async aquí.

Así que ahora estamos incrementando este valor del contador. Y vamos a sacar ese valor de aquí. Así que obtendremos la key. Y esperemos eso. Todo es asíncrono. Y solo voy a hacer un console log de eso por el momento. ¿Tiene sentido?

Así que probemos esto una vez más. Oops. Así que ahora, cuando hago curl a esto, este es el valor que estoy obteniendo de esta solicitud get. Y puedes ver que el valor aquí es un KVU64 uno. Y si lo golpeo de nuevo, verás que esas cosas incrementan. Así que saquemos ese valor, valor, valor. Llamémoslo contador y contador. Y oops, no lo registremos en console. De hecho, devolvámoslo en una respuesta aquí. Genial. OK, así que cuando lo estoy ejecutando ahora, debería obtener 6, 7, 8, 9. Y si mato este programa y lo reinicio, ese contador se mantiene. Genial. Así que tenemos una pequeña aplicación con estado donde no necesité instalar ninguna dependencia. No necesito ningún tipo de database.

Permíteme hacer una pequeña digresión aquí. Todo esto es desarrollo local. Y comencé esto diciendo, lo que estamos tratando de hacer es construir una plataforma para aplicaciones reales, no solo una única instancia de esto, sino instancias que se ejecutan en todo el mundo que son bastante reales, en cierto sentido.

9. Deno Deploy: Funciones de Borde Sin Servidor

Short description:

Deno Deploy es una plataforma de Funciones de Borde Sin Servidor que se ejecuta en la nube y en 35 centros de datos en todo el mundo. Utiliza la tecnología de Deno y está alimentada por FoundationDB, una base de datos escalable y fuertemente consistente. Deno Deploy no requiere ninguna configuración, aprovisionamiento o orquestación y está optimizado para una lectura rápida. Permite lecturas locales rápidas, lo que lo hace ideal para construir sitios de comercio electrónico o ejecutar servidores de aplicaciones en el borde.

Deno Deploy es una especie de la otra mitad de Deno, ¿verdad? Deno es de código abierto, con licencia MIT, muy parecido a Node que se ejecuta en tu terminal. Deno Deploy utiliza mucha de esa tecnología, se ejecuta en la nube, se ejecuta en 35 centros de datos en todo el mundo, y es una plataforma de Funciones de Borde Sin Servidor. Está alimentando, por ejemplo, las Funciones de Borde de Netlify o las Funciones de Borde de Superbase. Solo tengo que explicar eso.

Ahora, aquí está la parte real de esto. Tomemos este ejemplo y despleguémoslo en todo el mundo a todos estos centros de datos para que estemos incrementando este contador de manera estatal en todo el mundo. Lo interesante de esta API es que también se mapea no solo a una base de datos SQLite que se ejecuta localmente, sino a una base de datos georreplicada, fuertemente consistente en Deno Deploy. Esto está alimentado por FoundationDB, que es, puedes buscarlo si no lo sabes, pero está alimentando cosas como iCloud o Snowflake. Base de datos escalable. Esto no requiere ninguna configuración, ningún aprovisionamiento, ninguna orquestación, y está realmente optimizado para una lectura rápida para que puedas hacer lecturas locales rápidas en unos 20 milisegundos porque eso es lo que estás haciendo. Eso es a menudo lo que estás haciendo. Si estás construyendo un sitio de comercio electrónico, estás listando muchos productos de la base de datos, y eso necesita ser realmente rápido. Si estás ejecutando en el borde, si estás ejecutando tu servidor de aplicaciones en todas partes a la vez, necesitas poder leer esos datos muy, muy rápido.

Por cierto, tengo algunas instrucciones aquí si quieres probarlo, pero permíteme simplemente mover mis manos y decir que esto todavía está muy en desarrollo, así que tendrás que rogarme acceso si lo quieres. Pero permíteme demostrarlo aquí. Y veamos aquí, dash.dino.com. Así que esto es Deno Deploy. No voy a pasar por esto, pero crearé un nuevo proyecto. Voy a usar simplemente el pequeño editor incorporado aquí que tenemos. Así que he creado un nuevo nombre de dominio. Espero que esto sea visible. FunnySwan75. Permíteme simplemente renombrar esto a Node Congress. Espero que no esté tomado. Vale, así que ahora tengo nodecongress.dino.dev. Está devolviendo un servidor Hello World. Y permíteme tomar este código, copiar y simplemente borrar esto, y pegarlo allí. Y guardar y desplegar. Espero obtener un cero aquí para un contador cero en el lado izquierdo. Oh, ya son cinco.

10. Construyendo Servidores de Aplicaciones Reales con Deno

Short description:

La idea es construir un servidor de aplicaciones real con solo unas pocas líneas de código, cumpliendo la idea de forzar la optimización en los usuarios. Deno 2.0 saldrá pronto, con más características en desarrollo como caché, colas persistentes, trabajadores en segundo plano y almacenamiento de objetos. Deno restringe los programas a primitivas de nube distribuida, ayudando a los desarrolladores a construir servicios globales óptimos. Está surgiendo una nueva abstracción informática, similar a cómo Bash es para JavaScript como ELF es para WASM.

Vaya, ustedes son rápidos en esto. Así que cada vez que estoy recargando esto, estoy comprobando el valor de ese contador, ¿verdad? Y sí, esta página debería cargar rápido en Tokio o donde sea. Sí, ya sabes, supongo que déjame volver a mis diapositivas aquí. La idea aquí es que puedes simplemente abrir un editor, escribir un par de líneas de code y tener un servidor de aplicaciones real que no solo se ejecuta localmente, sino que está preparado para scale. Y creo que esto te acerca mucho a construir aplicaciones reales en solo un par de líneas de code y realmente cumpliendo esta idea de forzar la optimization en los usuarios. Hay más en desarrollo aquí. Hay caché, colas persistentes, trabajadores en segundo plano, almacenamiento de objetos, por supuesto, cada vez mejor compatibilidad hacia atrás para las personas. Como dije, Deno 2.0 saldrá este verano y este asunto de KV estará en marcha aquí pronto. Será lanzado en Deno Deploy pronto. Mi objetivo sigue siendo el mismo, ¿verdad? Con Node, el objetivo era restringir las primitivas de I.O., restringir los programas a primitivas de I.O. asíncronas para ayudar a los desarrolladores a construir servidores locales óptimos. Y en Deno, es solo una versión expandida de eso. Restringiendo programas a primitivas de cloud distribuidas, las primitivas correctas para ayudar a los desarrolladores a construir servicios globales óptimos. Y déjame dejarte con esta analogía, ¿verdad? Creo que está surgiendo una nueva abstracción informática aquí, ¿verdad? Bash es para JavaScript como ELF es para WASM. Hay una especie de futuro post-UNIX emergiendo y personas como James están trabajando en esto en Winter CG. Y sí, lo dejaré en eso.

QnA

Preguntas y Respuestas sobre las Características y Funcionalidad de Dino

Short description:

Gracias por su tiempo. Dino tiene como objetivo ser compatible con el navegador y no tiene la intención de solucionar la aritmética de punto flotante de JavaScript. Actualmente no hay forma de permitir el acceso solo a ciertas librerías, pero se está investigando en TC39. Dino puede alojarse en varios proveedores de nube, mientras que el backend de FoundationDB es específico para Dino deploy. KV amplía el alcance de las aplicaciones más allá de las tiendas de datos KV tradicionales. Elf es el formato binario ejecutable en Linux, análogo al lanzamiento de ejecutables Wasm desde JavaScript. El orador aclara que no estaban utilizando el usuario root en la terminal. La paginación es posible utilizando la API del cursor, y la auto-alojamiento con la misma funcionalidad que donut.dev solo es posible hasta cierto punto debido a la naturaleza propietaria del backend de FoundationDB.

Entonces, gracias por su tiempo. Gracias, Ryan, si puedes tomar asiento. Por favor, recuerden hacer sus preguntas en Slido. Tenemos dos en este momento. Entonces, la primera pregunta es, gracias por la gran charla, por cierto. Fue muy interesante. ¿Intentará Dino solucionar la aritmética de punto flotante de JavaScript en el futuro? No, no lo creo. Quiero decir, Dino está tratando de ser compatible con el navegador y eso es realmente un problema para TC39 y la definición del lenguaje. Dino no va a intentar salirse de eso. Vale, genial. Y la siguiente pregunta es, ¿existe una forma de permitir el acceso solo a librerías específicas? No, así que creo que a lo que se refiere esta pregunta es a permitir, por ejemplo, el acceso a la red a una dependencia pero no permitirlo a otras dependencias. Esto no es posible hasta donde podemos ver. Nos encantaría esta característica. Hay trabajo en curso en TC39 y creo que habrá algunas charlas sobre esto más tarde pero esto es muy investigativo y en el, disculpen, en este momento el sistema de permisos es más bien basado en procesos. Genial. ¿Y podrá la persona alojar KB en los proveedores de cloud existentes para confiar y GDPR? Sí, puedes tomar Dino y puedes desplegarlo donde quieras. Puedes ponerlo en AWS Lambda, tendrás una versión local de SQL lite de esto. Puedes poner esto en Cloud Run, puedes ponerlo donde quieras, eso es todo accesible. El backend de foundation DB es específico para Dino deploy. ¿Y para qué prevés que se utilice más KV? Sí, creemos que tradicionalmente las tiendas de datos KV son bastante limitadas en su conjunto de características. Y por eso la gente tiende a optar por las bases de datos relacionales muy a menudo con estas transacciones y este modelo de consistencia. Todavía creemos que hay un mundo donde las bases de datos relacionales son necesarias y las aplicaciones obviamente, pero creo que esto amplía bastante el alcance. Entonces, muchas, ya sabes, es difícil ponerle un número, pero ya sabes, algún número de, ya sabes, aplicaciones sencillas a aplicaciones de complejidad media creo que pueden encajar muy bien en esta abstracción KB. ¿Y qué es Elf? Elf es el formato binario ejecutable en Linux. Entonces, ya sabes, la analogía que estaba haciendo, debería haberla explicado un poco más, pero Elf es tan corto, ¿verdad? Entonces, ya sabes, estás usando Bash, estás usando lo que sea ZSH en Linux, y eso es como un lenguaje de programación dinámico. Es un lenguaje de programación dinámico, uno realmente malo, pero puedes lanzar binarios escritos en C, escritos en C++, escritos en Rust, ¿verdad? Esos son ejecutables Elf. Y la analogía es con JavaScript, tienes esta especie de shell, este lenguaje dinámico de JavaScript donde puedes lanzar estos ejecutables Wasm que están escritos en C++, Rust, etc., para un comportamiento más complicado. Gracias. Solo nos queda un minuto, ¿y por qué siempre usas el usuario root en la terminal? ¿Perdón? Sí, esa es una de las preguntas, ¿por qué siempre usas el usuario root en la terminal? Oh, no, estoy usando mi propio usuario, ¿estaba conectado como root? No. Genial. En tu primer ejemplo de kb, ¿sería posible listar todos los usuarios? Sí, y deberías mirar la documentation, hay una API de cursor, así que puedes hacer paginación a través de, puedes listar, digamos, la tabla de usuarios y paginar a través de eso bastante fácilmente. Genial. ¿Hay alguna forma de auto-alojamiento con la misma funcionalidad que proporciona donut.dev? Hasta cierto punto. Este backend de FoundationDB, esta especie de tienda KB distribuida es propietaria. Vale, gracias. Nos hemos quedado sin tiempo, pero muchas gracias. Practicamos nuestro aplauso, así que vamos a darle un 10. ¡Wooh! Gracias.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

React Compiler - Understanding Idiomatic React (React Forget)
React Advanced Conference 2023React Advanced Conference 2023
33 min
React Compiler - Understanding Idiomatic React (React Forget)
Top Content
React provides a contract to developers- uphold certain rules, and React can efficiently and correctly update the UI. In this talk we'll explore these rules in depth, understanding the reasoning behind them and how they unlock new directions such as automatic memoization. 
Speeding Up Your React App With Less JavaScript
React Summit 2023React Summit 2023
32 min
Speeding Up Your React App With Less JavaScript
Top Content
Too much JavaScript is getting you down? New frameworks promising no JavaScript look interesting, but you have an existing React application to maintain. What if Qwik React is your answer for faster applications startup and better user experience? Qwik React allows you to easily turn your React application into a collection of islands, which can be SSRed and delayed hydrated, and in some instances, hydration skipped altogether. And all of this in an incremental way without a rewrite.
From GraphQL Zero to GraphQL Hero with RedwoodJS
GraphQL Galaxy 2021GraphQL Galaxy 2021
32 min
From GraphQL Zero to GraphQL Hero with RedwoodJS
Top Content
We all love GraphQL, but it can be daunting to get a server up and running and keep your code organized, maintainable, and testable over the long term. No more! Come watch as I go from an empty directory to a fully fledged GraphQL API in minutes flat. Plus, see how easy it is to use and create directives to clean up your code even more. You're gonna love GraphQL even more once you make things Redwood Easy!
SolidJS: Why All the Suspense?
JSNation 2023JSNation 2023
28 min
SolidJS: Why All the Suspense?
Top Content
Solid caught the eye of the frontend community by re-popularizing reactive programming with its compelling use of Signals to render without re-renders. We've seen them adopted in the past year in everything from Preact to Angular. Signals offer a powerful set of primitives that ensure that your UI is in sync with your state independent of components. A universal language for the frontend user interface.
But what about Async? How do we manage to orchestrate data loading and mutation, server rendering, and streaming? Ryan Carniato, creator of SolidJS, takes a look at a different primitive. One that is often misunderstood but is as powerful in its use. Join him as he shows what all the Suspense is about.
Jotai Atoms Are Just Functions
React Day Berlin 2022React Day Berlin 2022
22 min
Jotai Atoms Are Just Functions
Top Content
Jotai is a state management library. We have been developing it primarily for React, but it's conceptually not tied to React. It this talk, we will see how Jotai atoms work and learn about the mental model we should have. Atoms are framework-agnostic abstraction to represent states, and they are basically just functions. Understanding the atom abstraction will help designing and implementing states in your applications with Jotai
The Epic Stack
React Summit US 2023React Summit US 2023
21 min
The Epic Stack
Top Content
Modern web development is fantastic. There are so many great tools available! Modern web development is exhausting. There are so many great tools available! Each of these sentiments is true. What's great is that most of the time, it's hard to make a choice that is wrong. Seriously. The trade-offs of most of the frameworks and tools you could use to build your application fit within the constraints of the vast majority of apps. Despite this, engineers consistently struggle with analysis paralysis.Let's talk about this, and a solution I am working on for it.

Workshops on related topic

Building a Hyper Fast Web Server with Deno
JSNation Live 2021JSNation Live 2021
156 min
Building a Hyper Fast Web Server with Deno
WorkshopFree
Matt Landers
Will Johnston
2 authors
Deno 1.9 introduced a new web server API that takes advantage of Hyper, a fast and correct HTTP implementation for Rust. Using this API instead of the std/http implementation increases performance and provides support for HTTP2. In this workshop, learn how to create a web server utilizing Hyper under the hood and boost the performance for your web apps.
Writing Universal Modules for Deno, Node and the Browser
Node Congress 2022Node Congress 2022
57 min
Writing Universal Modules for Deno, Node and the Browser
Workshop
Luca Casonato
Luca Casonato
This workshop will walk you through writing a module in TypeScript that can be consumed users of Deno, Node and the browsers. I will explain how to set up formatting, linting and testing in Deno, and then how to publish your module to deno.land/x and npm. We’ll start out with a quick introduction to what Deno is.