Nushell core team meeting 2022-08-31

Attendees

  • Fernando
  • Darren
  • JT
  • Jakub
  • Reilly
  • Michael
  • Andres

Topics

  • any objections to removing capnp? :'(

  • Release next Tuesday 9/6

    • general thoughts on $ removal #6434
    • general thoughts on parens around signatures #6444
    • general thoughts on source to source-env #6277
    • are there more breaking changes we can bundle?
  • Exploring integration with kafka

    • in a similar spirit as Iox
    • ability to view kafka topics
    • also publish and subscribe to events
    • will enable others the ability to then populate a dataframe with the subscriber events and publish out events from dataframe data as well.
  • Circular dependencies?

Discussed

  • $ removal

    • JT posted a video. Good initial response
      cell path are a little brittle but JT has a "fix" but it breaks a bunch of tests.
    • Andres suggest maybe maintain $ for special cases maybe like $nu.
    • Jakub suggest maybe use only $FOO for env vars, no $env.FOO anymore.
    • There's a revert $ removal PR if we need to. If there's a use case that we've missed and is "big" we might revert.
    • Keep the $ optional for the next release or two and then remove it if everything goes well
  • def brackets to parens - Still have to have space after def name() {} vs def name () {}

  • remove capnp - Fernando mentioned it's a pain but it's nice to have an example. We're ok to remove it.

  • source/source-env - Jakub finished it in JT's PR. Land it if it's ready. Both source and source-env are available. Source will be deprecated and eventually be removed.

  • use for custom commands and and aliases, there is no plan to support variables in use or source-env. Really no globals that get slurped into the current namespace but you can have variables inside your def like normal.

  • Fernando maybe change string interpolation from parens to braces? - kind of decided to leave it to parens.

  • existing PRs that will be breaking changes? not that we see.

  • kafka - Michael, good to have enterprise level tools like iox, kafka, etc. Darren grafana is cool.

  • cirular dependencies - jakub - use spam and in spam you do use the other and they try to source each other and end up in a stack overflow

  • JT doing show-n-tell of syntax issues/brainstorming.

def foo(x: int) {
  x + 100
}

# is it ok to do
foo(1000)
# commands
command foo [x: int] {
  x + 100
}

several examples - bad notes here, jt's notes below

Raw examples from discussion:

# def foo [x: int] {
#     $x + 100
# }

def foo(x: int) {
    x + 100
}

# 1) easy to be ambiguous var name and bare word
# 2) is this confusing?

# today:
foo 1000
# proposed:
foo(1000)


cat foo.txt

cat bar(10)

# what if that's okay?

# Part 1: seem like a function, work like a function

# Jakub said it's weird to have two ways, so what if:

## functions
def foo(x: int) {
    x + 100
}

## commands 
command foo [x: int] {
    x + 100
}


# Part 2: bare words vs strings

`cd foo`

SyntaxShape: BareString (FilePath is one of these)
`cd foo`

SyntaxShape: String
"foo"
`cd "foo"`

["a", "b", "c"]
[12kv, b, c]

# today:
str join 1 2

# with optional paren:
str join(1, 2)
str::join(1, 2)

str::join(1, 2) | where bar > 10 | sort

# TODO:

# No space
# Yes:
def foo (x: int) { }
# support:
def foo(x: int) { }

# Optional parens for calls
# 1 no, 4 yes, 2 maybes
foo(100)

def foo(x: int, --bar: int) {}
foo(--bar=100, 100)
foo --bar=100 100

# FilePaths are bare but strings are not
# 3 yes, 1 abstrain
["a", "b", "c"] <-- new list of strings
cd foo
Select a repo