tech-pkg archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Rewriting pkglint in a portable language
> Now that pkgsrc-wip has been moved to a git repository, how does a user who already has pkgsrc-wip by cvs update?
> due to ongoing problems with the portability of the Go programming
> language, I have considered to rewrite pkglint in another programming
> language.
> I estimate that rewriting pkglint, which is currently about 14000 lines
> of code, will take about half a minute per line, which still amounts to
> 120 hours. The good point is that this rewrite is not as risky as the
> last one, since the code is covered by unit tests; at least 80 percent
> of it.
> My currently preferred language is Vala/Genie from the GNOME project,
> which I don't yet speak fluently, but from what I have done in it, it
> seems to be very easy.
> * It has garbage collection.
> * It has memory protection.
> * It has a built-in string datatype (unlike C).
> * It has concise syntax.
> * It compiles to C, using the glib object model, which I guess is
> portable to all platforms pkgsrc will ever run on.
> * It compiles to reasonably fast code.
> * Performance-critical parts could be written directly in C.
> For benchmarking the speed, I wrote a recursive grep in Go, Vala, Genie
> and Nim, and compared that to the native grep. I chose this simple task
> because pkglint heavily depends on IO and parsing text files. The Vala
> version was about 50 percent slower than the Go version, which in turn
> had half the speed of the native grep.
> If someone can convince me that C++ or even C is better suited, please
> do so. I just fear the undefined behavior too much.
> Or if you prefer it to be written in a scripting languages like Perl,
> Python, Ruby, Lua, please provide some hints that it won't execute as
> slowly as the old Perl version. And, by the way, I like statically typed
> languages with explicit variable name checking, since they catch many
> errors at compile time.
> Are there any other languages out there that I missed? Or tools that
> could help in the translation?
> Looking for suggestions,
> Roland
Ada would seem to fit the requirements.
Ada seems to have fallen out of the mainstream outside the US Department of Defense, but FreeBSD ports has a package, synth, category ports-mgmt, written in Ada, as a replacement for portmaster.
Tom
Home |
Main Index |
Thread Index |
Old Index