identidad/manual_wrappers
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2025-06-16 09:27:59 -06:00
..
mxos-identity-curp Agregando breve documentación y ejemplos del como contribuir desde otros lenguajes (carpeta manual_wrappers) 2025-06-16 09:11:11 -06:00
.gitignore Agregando breve documentación y ejemplos del como contribuir desde otros lenguajes (carpeta manual_wrappers) 2025-06-16 09:11:11 -06:00
README.md Agregando grafo de los wrappers 2025-06-16 09:27:59 -06:00
test.php Agregando breve documentación y ejemplos del como contribuir desde otros lenguajes (carpeta manual_wrappers) 2025-06-16 09:11:11 -06:00
test.py Agregando breve documentación y ejemplos del como contribuir desde otros lenguajes (carpeta manual_wrappers) 2025-06-16 09:11:11 -06:00
test.rb Agregando breve documentación y ejemplos del como contribuir desde otros lenguajes (carpeta manual_wrappers) 2025-06-16 09:11:11 -06:00

📦 Manual de Wrappers

Este directorio contiene ejemplos prácticos de cómo cargar funciones escritas en Rust desde otros lenguajes de programación mediante el uso de FFI (Foreign Function Interface).

graph TD
    A["MxOS-Identidad"]
    
    subgraph "Wrapper Lenguaje"
        B["Python"]
        C["Ruby"]
        D["Node.js"]
        E["PHP wrapper"]
        F["Go wrapper"]
        G[".NET wrapper"]
        H["Java wrapper"]
        I["Swift wrapper"]
    end

🎯 Objetivo

El objetivo de este manual/carpeta es acercar a personas y comunidades que no necesariamente programan en Rust a la posibilidad de integrar librerías escritas en lenguaje Rusto en sus entornos habituales, como PHP, Nodejs, Perl, Python, Ruby, etc...

Mostrar cómo utilizar funciones definidas en una librería compilada en Rust a través de FFI desde lenguajes de aplicación mas populares. No necesitas ser un expert@ en Rust para beneficiarte de estas integraciones.

Estos ejemplos buscan ser una guía clara y mínima para que cualquier desarrollador pueda:

  • Cargar funciones Rust compiladas como .so (Linux)
  • Llamarlas desde su lenguaje de preferencia
  • Comprender los principios básicos de interoperabilidad entre lenguajes

🧪 Estructura

manual_wrappers/
├── mxos-identity-curp/                # Crate en Rust que expone funciones vía FFI
│   ├── src/lib.rs                     # Define las funciones disponibles (e.g. generar\_curp)
│   └── target/release/lib\*.so        # Archivo compilado generado por `cargo build --release`
├── test.php                           # Ejemplo de uso desde PHP
├── test.py                            # Ejemplo de uso desde Python
└── test.rb                            # Ejemplo de uso desde Ruby


🧵 ¿Qué es FFI?

FFI (Foreign Function Interface) es un mecanismo que permite a un lenguaje de programación llamar funciones escritas en otro lenguaje.

En nuestro caso:

  • 📦 Compilamos el código Rust como una librería compartida (.so en Linux, .dll en Windows, .dylib en macOS).
  • 📲 Usamos mecanismos de FFI en otros lenguajes para importar esa librería y llamar sus funciones como si fueran locales.

Esto permite, por ejemplo:

  • Ejecutar funciones de alto rendimiento escritas en Rust desde aplicaciones Python o PHP.
  • Reutilizar lógica compartida en múltiples entornos sin reescribirla.
  • Separar la lógica crítica del sistema en un lenguaje más seguro y rápido.

Librerías compartidas.

Cuando compilamos nuestro código en Rust (o C) libería compartida, esta cambia su extructura interna y extensión en función del Sistema operativo, la siguiente tabla ilustra esto:

Sistema Operativo Extensión de librerías dinámicas
Linux .so (Shared Object)
Windows .dll (Dynamic Link Library)
macOS .dylib (Dynamic Library)

🛠️ Requisitos

  • Tener Rust instalado (https://rustup.rs)
  • Compilar la librería con:
cd mxos-identity-curp
cargo build --release

Esto generará el archivo libmxos_identity_curp.so dentro de target/release/.


🧑‍🏫 Uso desde otros lenguajes

Cada uno de los archivos test.* muestra cómo importar y usar la función generar_curp(...) desde:


📚 Recursos recomendados

En Español

In English


🤝 Contribuciones

Si deseas agregar ejemplos en otros lenguajes como:

  • Go
  • Node.js
  • Java
  • .NET

¡Eres bienvenid@! Solo asegúrate de mantener la estructura clara y documentar el proceso de integración.

MxOS-Identity 🛡️ — Estamos construyendo herramientas para un futuro digital más justo y transparente para México 🇲🇽