过去,IDE 对语言特性的支持是集成在 IDE 或者以同构插件形式实现的,在 VSCode 中这种同构扩展能力以 Language API 或 Sematic Tokens Provider 接口方式提供,这两种方式在上一篇文章《你不知道的 VSCode 代码高亮原理》都有过介绍了,虽然架构上比较简单,容易理解,但有一些明显硬伤:插件开发者必须复用 VSCode 本身的开发语言、环境,例如 Python 语言插件就必须用 JavaScript 写。
例如:从R5 区域PC ping 192.168.6.2 时 报文最开始时TTL=255 报文到达R1 R2之间时 IP的TTL=126 MPLS 中的TTL=126当报文传至R3 R4 时 IP的TTL依然是126 而MPLS的TTL=124。