MinGW (Minimalist GNU for Windows), anteriormente conocido como MinGW32, es una implementación de los compiladores GCC para la plataforma Win32, que permite migrar la capacidad de este compilador en entornos Windows. Es un fork de Cygwin en su versión 1.3.3. Además MinGW incluye un conjunto de la API de Win32, permitiendo un desarrollo de aplicaciones nativas para esa plataforma, pudiendo generar ejecutables y bibliotecas usando la API de Windows.[2]

MinGW
Información general
Tipo de programa Compilador
Autor Colin Peters
Desarrollador Proyecto MinGW
Lanzamiento inicial 1 de julio de 1998
Licencia GPL
Estado actual En desarrollo
Información técnica
Programado en Ada, C, C++, Fortran, Java, Pascal
Plataformas admitidas Java
Versiones
Última versión estable 11.0.1 ( 29 de abril de 2023 (10 meses y 28 días)[1]​)
Última versión en pruebas 0.6.2-beta-20131004-14 de octubre de 2013
Archivos legibles
MinGW Developer Studio Project
Archivos editables
MinGW Developer Studio Project
Enlaces

Historia editar

MinGW fue creado por Colin Peters, el 1 de julio de 1998, compilándolo con Cygwin.[3]​ MinGW se llamaba originariamente mingw32; se quitaron los números del nombre para evitar la implicación que tendría el limitarlo a sistemas de 32 bits.[4]​ La primera versión nativa para Windows de MinGW fue realizada por Jan-Jaap van der Heijden, quien también tuvo participación en el proyecto GCC; añadiendo también binutils y make.[3][5]​ Mumit Khan estuvo a cargo del mantenimiento del proyecto e incluyó al compilador algunas características propias de Windows. Los archivos de cabecera del API de Windows fueron provistos por Anders Norlander. En 2000, el proyecto se trasladó a SourceForge.net para pedir asistencia de la comunidad y centralizar su desarrollo.[3]

MinGW fue seleccionado como Project of the Month en SourceForge en septiembre de 2005.[5]

Características editar

Soporte de lenguaje de programación editar

Para lenguajes de programación distintos de C, MinGW utiliza las bibliotecas de tiempo de ejecución GNU (por ejemplo, GNU libstdc ++ para C++).[cita requerida]

Sin embargo, como GCC no proporciona su propia biblioteca C de tiempo de ejecución, el compilador C de MinGW tiene como objetivo la antigua Biblioteca de tiempo de ejecución de C Visual de Microsoft, MSVCRT, que fue lanzado en 1998 y por lo tanto, no incluye soporte para funciones de C99 (ni siquiera la especificación C89 completa); aunque el uso de MSVCRT permite producir programas nativos que no requieren instalar componentes adicionales, la falta de soporte de C99 ha causado problemas de portabilidad, en particular en lo concerniente a los especificadores de conversión tipo printf. Estos problemas se han atenuado parcialmente mediante la implementación de una biblioteca de compatibilidad de C99, libmingwex, pero la amplia labor requerida está lejos de completarse y no parece que pueda realizarse plenamente.[6]Mingw-w64 ha resuelto estos problemas, y proporciona funcionalidad conforme a POSIX en las funciones tipo printf.

Componentes de MinGW editar

El proyecto de MinGW mantiene y distribuye un número de diferentes componentes y paquetes complementarios, incluidos los diversos puertos de GNU toolchain, tales como GCC y binutils, traducido en paquetes equivalentes.[4][7]​ Estas utilidades pueden utilizarse desde la línea de comandos de Windows o integradas en un IDE. MinGW admite bibliotecas nombradas de acuerdo con los convenios "<name>.lib" y "<name>.dll" además de la habitual convención "lib<name>.a" común en sistemas UNIX-like.

Además, un componente de MinGW, conocido como MSYS (Minimal SYStem) proporciona ports de win32 de un entorno de shell ligero de tipo Unix que incluye rxvt y una selección de herramientas POSIX suficientes para permitir a las secuencias de comandos (scripts) de autoconf ejecutarse.[8][9]

Los mingwPORTs son añadidos de usuario (contribuciones) a la colección de software MinGW. En lugar de proporcionar estos "complementos" como paquetes binarios precompilados, se suministran en forma de scripts interactivos de shell Bourne, que guía al usuario final a través del proceso de descarga y revisiones (parcheo) del código fuente original automáticamente, para a continuación compilarlo e instalarlo. Los usuarios que deseen construir cualquier aplicación desde un mingwPORT deben instalar primero MinGW y CYGWIN.[10][11]

La ejecución de archivos de cabecera de Win32 y bibliotecas de importación de Win32 para vincular el tiempo de ejecución son liberados bajo una licencia permisiva,[12]​ mientras que los portes de GNU se liberan bajo licencia GNU. Están disponibles en el hogar web de MinGW descargas binarias del paquete completo de CYGWIN y utilidades de GNU MinGW individuales.

Comparación con Cygwin editar

MinGW surgió de una bifurcación de la versión 1.3.3 de Cygwin.[3]​ Aunque Cygwin y MinGW pueden utilizarse para portar software de Unix a Windows, tienen diferentes enfoques:[13]​ Cygwin pretende ofrecer una capa POSIX completa (similar a la encontrada en otros sistemas de Unix o Linux) de Windows, sacrificando el rendimiento cuando sea necesario para optimizar la compatibilidad. En consecuencia, este enfoque requiere programas Win32 escritos con Cygwin para ejecutar sobre una biblioteca de compatibilidad copyleftada que debe ser distribuida con el programa, junto con el código fuente del mismo. MinGW pretende proporcionar funcionalidad nativa y rendimiento a través de llamadas a la API de Windows directamente. A diferencia de Cygwin, MinGW no requiere una capa de compatibilidad DLL y por lo tanto los programas no necesitan distribuirse con el código fuente.

Como MinGW depende de llamadas a la API de Win32, no puede proporcionar una API completa POSIX; es incapaz de compilar algunas aplicaciones de Unix que se pueden compilar con Cygwin. Específicamente, esto se aplica a las aplicaciones que requieren la funcionalidad POSIX como fork(), mmap() o ioctl()[13]​ y aquellos que se espera poder ejecutar en un entorno de POSIX. Las aplicaciones escritas con una biblioteca de plataforma cruzada que sí se han portado a MinGW, como SDL, wxWidgets, Qt, o GTK+ se suelen compilar fácilmente en MinGW como se haría en Cygwin.

La combinación de MinGW y CYGWIN proporciona un entorno pequeño e independiente que puede cargarse en medios extraíbles sin dejar entradas en el registro de Windows o archivos en el equipo. Al proporcionar más funcionalidad, Cygwin es más complicado de instalar y mantener.

Véase también editar

Referencias editar

  1. Información de lanzamiento corresponde sólo al paquete GCC. [1]
  2. SourceForge.net: MinGW - Minimalist GNU for Windows
  3. a b c d (en inglés) MinGW - History
  4. a b (en inglés) What is MinGW?
  5. a b (en inglés) SourceForge Project of the Month Archivado el 23 de agosto de 2007 en Wayback Machine.
  6. gcc (21 de junio de 2010). «C99». 
  7. MinGW Components
  8. What is MSYS?
  9. MinGW - Minimal SYStem
  10. «Copia archivada». Archivado desde el original el 29 de junio de 2011. Consultado el 20 de abril de 2011. 
  11. [2]
  12. http://www.mingw.org/license
  13. a b http://www.mingw.org/node/21

Enlaces externos editar