Software que intercepta y modifica el comportamiento
En programación informática , un shim es una biblioteca que intercepta de forma transparente las llamadas a la API y cambia los argumentos pasados, maneja la operación en sí o redirige la operación a otro lugar. [1] [2] Los shim se pueden utilizar para dar soporte a una API antigua en un entorno más nuevo, o a una API nueva en un entorno más antiguo. Los shim también se pueden utilizar para ejecutar programas en plataformas de software diferentes a las que fueron desarrollados.
Las correcciones de compatibilidad para APIs antiguas suelen aparecer cuando cambia el comportamiento de una API, lo que provoca problemas de compatibilidad para aplicaciones antiguas que todavía dependen de la funcionalidad anterior; en tales casos, la API antigua puede seguir siendo compatible con una fina capa de compatibilidad sobre el código más nuevo. Las correcciones de compatibilidad para APIs más nuevas se definen como: "una biblioteca que incorpora una nueva API a un entorno más antiguo, utilizando únicamente los medios de ese entorno". [3]
Compatibilidad de AppleTalk en ordenadores Macintosh durante el breve periodo en el que Apple Computer dio soporte al sistema de redes Open Transport . Miles de programas Mac se basaban en el protocolo AppleTalk; para dar soporte a estos programas, AppleTalk se volvió a implementar como una "pila" de OpenTransport, y luego se volvió a implementar como una API shim sobre esta nueva biblioteca.
El kit de herramientas de compatibilidad de aplicaciones de Microsoft Windows (ACT) utiliza el término para referirse a bibliotecas compatibles con versiones anteriores . Las correcciones simulan el comportamiento de versiones anteriores de Windows para aplicaciones heredadas que dependen de funcionalidades incorrectas o en desuso, o corrigen la forma en que aplicaciones mal escritas llaman a API sin cambios, por ejemplo, para corregir errores de cuentas de usuario con privilegios mínimos (LUA) . [4]
bind.so es una biblioteca shim para Linux que permite a cualquier aplicación, independientemente de los permisos, vincularse a un socket de escucha o especificar una dirección IP saliente. [5] Utiliza el mecanismo LD_PRELOAD , que permite cargar shims y otras bibliotecas en cualquier programa.
En el patrón de túnel de tipos , una capa de interfaz genérica utiliza una familia de calces para traducir un conjunto heterogéneo de tipos a un único tipo primitivo utilizado por una API subyacente. [6]
^ "¿Las aplicaciones de su empresa son incompatibles con Windows 7? Cálmelas, dice Microsoft". Computerworld . 2009-03-21 . Consultado el 2014-04-05 .
^ "Desmitificando las cuñas - o - Utilizando el kit de herramientas de compatibilidad de aplicaciones para que sus cosas antiguas funcionen con sus cosas nuevas". Microsoft TechNet . 2011-06-17 . Consultado el 2014-04-05 .
^ de Axel Rauschmayer (2014). Hablando de JavaScript. Shims versus polyfills.
^ "Kit de herramientas de compatibilidad de aplicaciones de Microsoft 5.0". Microsoft . 11 de diciembre de 2007 . Consultado el 24 de junio de 2008 .
^ "Código fuente de bind.so". Daniel Ryde. 2010-01-09 . Consultado el 2014-04-05 .[ enlace muerto ]
^ Wilson, Matthew (agosto de 2003), "Manipulación generalizada de cadenas: correcciones de acceso y tunelización de tipos", C/C++ Users Journal , 21 (8)
Enlaces externos
Centro de desarrollo de Microsoft: compatibilidad de aplicaciones de Windows 8 Client y Server 2012