Thank you. I knew Weinberger was at Google, but didn't know he was on the Go team -- cool!
On Sat, Nov 17, 2018 at 6:03 PM Alan Donovan <adono...@google.com> wrote: > This is great, both as an "étude"---a challenge for sharpening your > technique---and as an exemplary write-up of the process of building > something non-trivial and making it both correct and fast. Nice work. > > I'm sure you knew already, but Peter Weinberger (the W in AWK) is on the > Go team at Google. > > > > On 17 November 2018 at 12:44, Ben Hoyt <benh...@gmail.com> wrote: > >> I've "finished" my Go AWK interpreter and released v1.0.0 now. I've fixed >> several bugs, and also sped up the interpreter significantly, primarily by: >> >> 1) Resolving variable names to integers at parse time so we can do >> []value lookups instead of map[string]value lookups at runtime >> 2) Using normal error returns instead of panic/recover internally for >> interpreter errors (but oh for the proposed "check" keyword to make this >> less verbose!) >> 3) Using switch/case to switch on binary operation type instead of >> looking up the operation in a map of functions >> 4) Avoiding allocations in many instances >> >> Here's a write-up about GoAWK for those that are interested: >> >> https://benhoyt.com/writings/goawk/ >> >> It's pretty much a toy project, not being used for anything real, but it >> seems to be in a good shape. Feedback welcome! >> >> -Ben >> >> >> On Fri, Aug 24, 2018 at 5:13 PM Ben Hoyt <benh...@gmail.com> wrote: >> >>> I recently wrote an AWK interpreter in Go: >>> https://github.com/benhoyt/goawk >>> >>> It's a pretty simple implementation: hand-rolled lexer, >>> recursive-descent parser, and tree-walk interpreter. It's pretty complete >>> according to the POSIX spec, and it passes the AWK ("one true awk") test >>> suite as well as my own unit tests. >>> >>> In some quick tests I ran, I/O speed is on a par or better than AWK but >>> the interpreter itself is quite slow -- about 5x slower for a lot of >>> things. I hope to add some proper benchmarks soon. I have a pretty good of >>> why and how to fix it: variable lookup and assignment is slow, and I'm >>> planning to fix by resolving more things at parse time. >>> >>> One thing that's a bit funky about AWK is its type handling: string >>> values can be real strings or "numeric strings" (numbers that came from >>> user input). I'm currently passing the "value" struct (see interp/value.go) >>> around by value. I still need to test if that's a good idea >>> performance-wise or not. >>> >>> I'd love to hear any comments, bug reports, or -- especially -- code >>> reviews. >>> >>> -Ben >>> >>> -- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "golang-nuts" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/golang-nuts/kYZp3Q1KKfE/unsubscribe. >>> To unsubscribe from this group and all its topics, send an email to >>> golang-nuts+unsubscr...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >>> >> > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.