Para su primera pregunta, tenga en cuenta las cosas que un navegador moderno tiene que aplicar (algunos navegadores empujan parte de este trabajo a los servicios del sistema operativo):
- Varios programas de análisis: XML, HTML, JavaScript, CSS, al menos.
- Al menos cuatro sistemas de disposición separados (modelo de caja CSS, flexbox, SVG, MathML).
- Al menos una biblioteca de gráficos; para los navegadores multiplataforma esto necesita backends por plataforma (IE9 + solo usa la biblioteca del sistema Direct2D, Safari en Mac solo usa Quartz hasta donde yo sé).
- Una máquina virtual de alto rendimiento con un JIT, un recolector de basura, una biblioteca estándar (crece todo el tiempo, ve las matrices tipadas y varias otras características de JavaScript recientes).
- Implementación de DOM, que incluye varias cosas como las interfaces DOM específicas de SVG y específicas de SVG, entre otras.
- Instalaciones de procesamiento de audio y video (nuevamente Safari en Mac e IE descarguen estas al sistema operativo).
- Instalaciones de procesamiento de imágenes, con soporte para al menos JPG/GIF/PNG. Nuevamente, algunos navegadores pueden descargar partes de esto al sistema operativo.
- Una biblioteca para convertir secuencias de bytes a caracteres Unicode. Nuevamente, a veces esto puede descargarse al sistema operativo y otras no.
- Para navegadores multiplataforma, algún tipo de capa de portabilidad que abstrae los bits específicos de la plataforma.
- Un editor HTML con transacciones y una API programable; piensa contento.
- Un editor de texto plano para textareas. Parte de esto se puede compartir con el editor de HTML, tal vez.
- Un corrector ortográfico, que puede descargarse o no en el sistema operativo.
- Una biblioteca de red compatible con HTTP, tal vez SPDY, probablemente FTP, y tal vez algunos otros protocolos. De nuevo, esto puede o no descargarse en el sistema operativo.
- Una biblioteca criptográfica para manejar SSL y varias otras necesidades de criptografía. De nuevo, esto puede o no descargarse en el sistema operativo.
- Al menos una implementación de base de datos (sqlite parece ser popular).
- Varios códigos para la interfaz de usuario real y otras cosas.
- Código de pegamento para manejar las interacciones entre todos estos: código que gestiona las llamadas entre JavaScript y DOM, código que gestiona el estilo de recomposición y la información de diseño cuando cambia el DOM, código que maneja cosas como
document.write
inyectando cadenas de JavaScript en el flujo de entrada del analizador, y demás. Tenga en cuenta que la cantidad de código de pegamento generalmente es cuadrática en el número de módulos que interactúan.
Probablemente me estén perdiendo algunas cosas, pero eso es algo fuera de lo común.
Además de esto, al menos Gecko y WebKit tienen bibliotecas de plantillas para cosas como cadenas y matrices (debido a que las bibliotecas estándar de C++ tienen varios inconvenientes).
Para el resto ... en este punto, muchos de los "hacks de compatibilidad" son en realidad parte de los estándares web. Entonces no puedes evitarlos exactamente. Su escenario habla sobre JavaScript y HTML pero no SVG o MathML o CSS. Si realmente solo quiere decir HTML y JavaScript, pero no CSS o el resto, entonces, obviamente, podría recortar un montón de código. Si incluye todos esos, más las capacidades de audio y video de HTML5 y desea que su navegador funcione bien, entonces dudo que pueda hacerlo mucho más pequeño.
+1 para el corolario. – Thilo