数据科学爱用程序语言Julia发布全新调试器

数据科学家爱用的程序语言Julia,发布了全新功能完整的调试器(Debugger) ,可以让开发者轻松地调试和内省(Introspect)程序代码,可以深入函数手动走访程序代码,并检查状态,也能在不需要重新启动的状况下,以交互的方式更新和替换现有程序代码,或是设置中断点和陷阱错误,帮助开发者捕捉故障发生的问题。

官方提到,调试器本身就是一组各种功能集合的工具,而其核心功能则是由解释器支持,该解释器不仅能够执行Julia程序代码,也能以各种前端控制解释器的执行。每个前端都有其可用的组件,Juno将调试器集成进IDE中,Rebugger则提供REPL文本用户接口,而调试器提供传统的命令接口。这些调试功能都与组件Revise无缝集成,开发者可以在同一个对话(Session)中,连续分析和修改程序代码。

Juno为解释器提供了丰富的用户接口,让开发者可以设置中断点,并直接在原始程序代码中逐步执行。调试器REPL能够在本地上下文执行任意程序代码,开发者可以在Workspace中检查区域变量,使用宏Juno.@run开始直译开发者的程序代码,或是Juno.@enter可以从第一行开始逐步进行。

当开发者使用Atom之外的编辑器,或是通过控制台接口在远程对话中工作,可以使用REPL进行调试,REPL有两种接口,其一是调试器提供类似gdb的逐步、下一步和继续接口,另一种Rebugger则是提供IDE形式的控制台接口。调试器具有一些其他接口都没有的功能,像是调控逐步执行的精细度,以及执行生成函数的生成子等。

而Julia这些新的调试功能都来自新版的JuliaInterpreter,官方提到,JuliaInterpreter是整个堆栈的关键,其包含评估和检查Julia程序代码的逻辑,也能用于逐步进行程序代码评估以及中断点的实例。 JuliaInterpreter是从ASTInterpreter2组件改进而来,顺应Julia 1.0的需要,加入了许多改变,在性能上也获得了大幅度的改进,约是原本的50倍速度。

JuliaInterpreter改进添加对中断点的支持,官方提到,严格说来虽然不是解释器功能,但却是构建调试器必要的功能,并且也可以被视作解释器控制流的一种形式,这些中断点可以用中断点函数和宏设置,或在Juno、Rebugger与调试器中操作,或是甚至在程序代码中以宏设置。

官方提到,虽然解释器的速度加快了,但是比起编译的程序代码执行速度,仍然差距了几个量级,他们会在几个月内缩小这个差距,但是终究直译程序代码仍然比编译过的程序代码慢。