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