Skip to content

Deprecated function Call.PC() breaks tinygo compatibility? #31

Description

@dkegel-fastly

Following a rabbit hole of dependencies that starts at tinygo-org/tinygo#2153, I noticed that

$ git clone https://github.com/go-stack/stack
$ cd stack
$ go test

succeeds, but

$ tinygo test

fails with

stack.go:164:17: c.frame.PC undefined (type runtime.Frame has no field or method PC)

That's

162 // Deprecated: Use Call.Frame instead.
163 func (c Call) PC() uintptr {
164         return c.frame.PC
165 }

So for what it's worth, the deprecated function Call.PC() is causing tinygo build failure. Commenting it out lets tinygo test pass.

Activity

  1. ChrisHines commented on Nov 12, 2021

    @ChrisHines
    Member

    Indeed. Tinygo's runtime.Frame type is not fully compatible with Go's runtime.Frame type. It is missing several fields.

    The best solution here is to move func (c Call) PC() uintptr into a separate file that specifies a !tinygo build tag.

    Would you like to submit a PR for that?

  2. dkegel-fastly commented on Nov 13, 2021

    @dkegel-fastly
    Author

    I must have been smoking something. Fixing that one problem uncovers another one now:

    stack_test.go:580:6: fn.FileLine undefined (type *runtime.Func has no field or method FileLine)
    

    so maybe it's best to leave sleeping dogs lie for a bit, until the need for a fix is stronger.

  3. ChrisHines commented on Nov 14, 2021

    @ChrisHines
    Member

    Sure. Tinygo's runtime package is quite a bit smaller than Go's, so any code that depends on runtime is likely to have issues like this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions