Bienvenidos a One!
Es un lenguaje de programación de código abierto, autohospedado y de arranque que facilita construir software confiable y eficiente.
Está siendo desarrollado por Max, John Y otros contribuyentes de código abierto.
- Simplicidad
- Compilador
- Capacidad de crear archivo de salida (x86_64, i386)
- Lenguaje de programación de sistema
- Nivel intermedio
- Programacion Network y API
- Soporta programación Web (próximamente)
- Generación automática del código correspondiente para CSS y HTML. Así que no tendrás que aprender sino el lenguaje
One
para desarrollar un sitio web - Emplea variables en CSS, de manera que podemos obtener los colores o tamaños de la base de datos
- Auto minifica los resultados de la página
- Generación automática del código correspondiente para CSS y HTML. Así que no tendrás que aprender sino el lenguaje
- Desempeño y alta velocidad
- Soporta inline Assembly code (próximamente)
- No requiere librerías y herramientas específicas en el sistema del usuario en modo normal (próximamente)
- No requiere bibliotecas de ejecución externas en modo normal (próximamente)
- No requiere compiladores externos para llevar a cabo la compilación (próximamente)
La gramática del lenguaje One
está disponible aquí.
- Lexer/Parser (Mayormente)
- Arbol AST
- VM
- Generador de código (inspirado en LLVM-C)
- Desarrollar una biblioteca en tiempo de ejecución y agregar funciones
- Diseñar arquitectura (framework) web para el lenguaje
- Reescribir el compilador en el lenguaje
One
main {
ret 0
}
Convertir a C:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
global_argc = argc;
global_argv = argv;
return (int) 0;
}
i32 main {
ret 10
}
Convertir a C:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
global_argc = argc;
global_argv = argv;
return (int) 10;
}
main {
string in = "Hello, World!"
__ in
return in.length
}
Convertir a C:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
global_argc = argc;
global_argv = argv;
char *in = "Hello, World!";
printf("%s\n", in);
return (int) strlen(in);
}
Otro ejemplo:
import web
home {
_ "Hi, Welcome"
}
error {
headers.add('HTTP/1.0 404 Not Found')
headers.add('content-type: text/html;charset=utf-8')
_ "<h1>404></h1>"
}
main {
if system.args.length === 2 {
port = system.args[1]
} else {
port = 8080;
}
web.route.add("/", home)
web.route.add("*", error)
web.listen(port)
return 0
}
Otro ejemplo:
error {
headers.add('HTTP/1.0 404 Not Found')
headers.add('content-type: text/html;charset=utf-8')
_ `<!doctype html><html><head><title>Error 404</title><meta charset="utf-8"></head><body><h1>404></h1></body></html>`
}
vs
error {
headers.add('HTTP/1.0 404 Not Found')
headers.add('content-type: text/html;charset=utf-8')
page {
title: 'Error 404'
label {
type: 'h1'
_ "Not found!"
}
}
}
main:
// __ "Hello, World!"
_ "Hello,"
io.write(' ')
io.write("World")
__ '!'
end
@start
customName:
_ "Hello, World!\n"
end
@start
void app:
__ "Hello, World!"
end
@start
int customName:
_ "Hello, World!\n"
return 0
end
Esta arquitectura está diseñada solo para sitios web y software nativo. En el futuro, también estará disponible para aplicaciones móviles. (native).
Las estructuras móviles aún no están completas y aún requieren de atención y dedicación.
El siguiente es un ejemplo de como funciona el lenguaje:
title "Name - Main"
description "Descriptions"
/*
Keyword tag not used in the software, only on the web.
*/
keyword "keywords"
style {
* {
margin 0
padding 0
}
header {
width "100%"
height "auto"
}
list {
color "red"
}
list item {
display "inline"
padding "10px"
background "yellow"
}
}
header {
list {
item {
_ "Home"
}
item {
_ "About"
}
item {
_ "Contact Us"
}
}
}
Convertir a base CSS/HTML/JS:
<html>
<head>
<title>Name - Main</title>
<meta name="description" content="Descriptions" />
<meta name="keyword" content="keywords" />
<style>
* {
margin: 0;
padding: 0;
}
header {
width 100%;
height: auto;
}
ul {
color: red;
}
ul li {
display: inline;
padding: 10px;
background: yellow;
}
</style>
</head>
<body>
<header>
<ul>
<li>Home</li>
<li>About</li>
<li>Contact Us</li>
</ul>
</header>
</body>
</html>
Puedes revisar este link para comenzar a aprender el lenguaje.
- GNU / Linux
- Windows
- macOS (Incompleto)
- BSD
Aceptamos cualquier tipo de contribuciones, incluyendo reportes de bugs, solicitud de funciones, mejoras en la documentación, etc. Para hacer una pregunta o iniciar una conversación, create an issue o únete al One Servidor de Discord.
Si no estás familiarizado con el procedimiento para hacer un pull request en GitHub puedes revisar esta guía.
Si has decidido contribuir, por favor revisa los lineamientos aquí.
También puedes ayudar al desarrollo de One
a través de donaciones en ❤️ Patreon.
Gracias a todos los colaboradores!!
Si te gustaría contribuir al desarrollo de este proyecto, puedes esctibirnos a: [email protected]
One
está publicado bajo la Licencia Pública General GNU v3.0. Por favor revisa los términos en el archivo LICENCIA incluido en el repositorio.