UpTools: librería C++

UpTools es una librería open source de clases C++ para desarrollo. Se originó a partir de las necesidades de los proyectos de investigación y desarrollo del Departamento de Electrónica y Comunicaciones de la Facultad de Ingeniería de la Universidad de Palermo.

La licencia permite su inclusión tanto en proyectos de código abierto como en proyectos comerciales de código cerrado.

UpTools contiene potentes herramientas para facilitar y acelerar los siguientes aspectos del desarrollo de aplicaciones modernas.

1. Computación de alta performance (HPC)
1.1 Distribución de carga y procesamiento paralelo en aplicaciones transaccionales
1.2 Paralelización y aceleración de algoritmos y aplicaciones científicas

Facilita la división y paralelización del procesamiento. El programador define el algoritmo de procesamiento y el criterio de división del espacio de datos, luego la librería UpTools se encarga de la subdivisión y paralelización del trabajo entre los threads administrados, y también se encarga de la consolidación de los resultados de cada parte. Asimismo puede administrar y facilitar el paralelismo en servidores transaccionales.

2. Multi-threading
2.1 Threads (hilos de ejecución)
2.2 Exclusión mutua (mutex), semáforos, locks de lectura/escritura, locks de alcance automático
2.3 Condiciones
2.4 Datos específicos de thread

Las clases y templates de multi-threading en la UpTools utilizan internamente los threads de Posix, pero otorgan un interfaz clara y simple al desarrollador de C++, que disminuye considerablemente los errores y el tiempo de desarrollo.

3. Tiempos y timers
3.1 Manipulación de tiempos
3.2 Timers y multi-threading

Define objetos y métodos para la manipulación del tiempo. Administra timers en entornos multi-threading de manera confiable y ordenada.

4. Administración de memoria
4.1 Objetos y punteros inteligentes
4.2 Facilidades de seguimiento y administración de objetos en memoria

La librería incluye punteros inteligentes que permiten administrar la vida de los objetos en memoria en entornos multi-threading. Permite opciones de debug y de auditoría del estado de la memoria, para un seguimiento en tiempo de ejecución de los objetos.

5. Texto y cadenas
5.1 Operadores sobre cadenas de texto
5.2 Expresiones regulares
5.3 Reemplazos y substituciones
5.4 Parseo y manejo de configuraciones y archivos de configuración

Incluye múltiples operadores entre strings y otros tipos que facilitan la manipulación de textos. Asimismo provee de un interfaz en C++ para expresiones regulares Posix y reemplazos. Administra archivos de configuración para aplicaciones.

6. Bases de datos
6.1 Interfaz común para diferentes bases de datos
6.2 Acceso a bases de datos en entornos multi-threading

La librería permite acceder a diferentes bases de datos sin necesidad de alterar el código fuente de los programas que la incluyen. Actualmente soporta Postgresql y MySql, pero se prevé la inclusión DB2 y otras. Permite la administración automática de servidores de respaldo y la provisión de conexiones exclusivas para cada thread, de manera transparente para el programador.

7. Networking (programación en redes)
7.1 Manipulación de direcciones IP de host y de red, y direcciones UNIX
7.2 Consultas DNS
7.3 Acceso asincrónico a consultas DNS
7.4 Sockets
7.5 SSL y TLS
7.6 Manejo simplificado de eventos en múltiples comunicaciones simultáneas
7.7 Tablas de ruteo ultrarápidas, habilitantes de búsquedas e inserciones a velocidad de cable, tanto para IPv4 e IPv6

UpTools permite un manejo muy rápido y sencillo de direcciones de host, de red y de sockets. También, dado que las consultas DNS suelen ser muy lentas en términos de cpu, la librería permite la consulta asincrónica, en paralelo a los threads de ejecución de la aplicación, asociando el código de procesamiento del resultado, al evento de obtención de la respuesta. Permite la utilización de comunicaciones encriptadas con TLS y SSL, con mínimos cambios a un programa que ya estaba realizado sin criptografía. Permite también la manipulación de certificados PKI.
Los objetos y algoritmos para tablas de ruteo de las UpTools, fueron incluidos en aplicaciones manejando múltiples intefaces de 10gbps operados a máxima ocupación, junto a las tablas completas de internet obtenidas de múltiples proveedores de Internet (millones de entradas y millones de búsquedas por segundo a la velocidad de cable).

El paquete instalable en Linux de la librería se puede descargar desde el siguiente enlace:
https://www.palermo.edu/ingenieria/UpTools-8.6.12.tgz   versión Marzo 2020.

Instalar Paquetes precompilados como RPM

Versiones anteriores de la librería están disponibles para usuarios de:

  • Fedora 19 (Version 8.6.3)

  • Fedora 18 (Version 8.6.3)

  • Centos 6.x y Red Hat Enterprise Linux 6.x (Por medio de repositorio EPEL (Version 8.6.3)

  • Fedora 17 Version 8.6.2)

  • Fedora 16 (Version 8.6.2)

  • Fedora 15 (Version 8.6.2)

  • Fedora 14

  • Fedora 13

  • Centos 5 y Red Hat Enterprise Linux 5 (Por medio de repositorio EPEL)

Estos paquetes se pueden instalar ejecutando:
yum install UpTools UpTools-devel

• Para más información, comentarios u otras consultas sobre las UpTools, escribir a: uptools@palermo.edu