If you are new to InterSystems, you should start with IRIS, which is the newest product, the replacement for Caché. 

You can download the distributive here or through WRC if you already have access.

The installation process on Windows is quite simple, just run the installer, and press the buttons Next. It will be enough for the evaluation. You may look at the documentation, for the Installation guide.

Management Portal is a part of the default installation. And in windows, should be available from the menu by the InterSystems Cube icon in the tray.

And usually, the URL is something like this. The port can be different if you have more than one instance of Cache installed.

http://localhost:57772/csp/sys/UtilHome.csp

On the Login page, it does not show IRIS Logo. IRIS just returns 404 for the icon, if it's present, after the first login, it appears in WebGateway cache and became available. And the same for any static files. The Security Audit shows this error.

<PROTECT>%Oid+3^%Stream.Object.1 ^IRIS.SM.Shard,/usr/irissys/mgr/

Documentation about installation IRIS in macOS.

The easiest way to try it is to start it with docker.

docker run -d --name irishealth -p 52773:52773 store/intersystems/irishealth-community:2021.1.0.205.0

With installed docker when this command will successfully download the image, and starts IRIS for Health, you may try to open it, as usual by URL http://localhost:52773/csp/sys/UtilHome.csp, with default login and password, but will ask to change it.

For Ensemble

docker run -d --name ensemble -p 52772:52772 daimor/intersystems-ensemble:2018.1

But, be aware, that all your changes will disappear when the container will be stopped and deleted.

Are you sure, that the process was terminated?

You should check cconsole.log/messages.log

journal records, you should find there where transaction was started, you changed the data, check if change was really in transaction and any other records within the process, it should be commit or rollback. 
In any case, when restart Cache, it should terminate any unfinished processes and rollback data.

That’s interesting, somebody dislike that new ability?

With this language server in fact, it’s possible to add the ability to compile ObjectScript code to any editor which got the support for Language Server Protocol, and it includes even vim/neovim, emacs, and some other editors. If you would like to add this to any supported editor and need help, contact me.

Some example of code in Go

package main

import (
  "fmt"
  "os"
  "strings"

  "github.com/caretdev/go-irisnative/src/connection"
)

func main() {
  var addr = "localhost:1972"
  var namespace = "%SYS"
  var login = "_SYSTEM"
  var password = "SYS"

  connection, err := connection.Connect(addr, namespace, login, password)
  if err != nil {
    println("Connection failed:", err.Error())
    os.Exit(1)
  }
  defer connection.Disconnect()

  // Kill ^A
  connection.GlobalKill("A")
  // Set ^A(1) = 1
  connection.GlobalSet("A", 1, 1)
  // Set ^A(1, 2) = "test"
  connection.GlobalSet("A", "test", 1, 1)
  // Set ^A(1, "2", 3) = "123"
  connection.GlobalSet("A", 123, 1, "a", 3)
  // Set ^A(2, 1) = "21test"
  connection.GlobalSet("A", "21test", 2, 1)
  // Set ^A(3, 1) = "test31"
  connection.GlobalSet("A", "test31", 3, 1)

  var globalFull = func(global string, subs ...interface{}) string {
    return fmt.Sprintf("^A(%v)", strings.Trim(strings.Join(strings.Split(fmt.Sprintf("%+v", subs), " "), ", "), "[]"))
  }
  var queryGlobal func(global string, subs ...interface{})
  queryGlobal = func(global string, subs ...interface{}) {
    for i := ""; ; {
      if hasNext, _ := connection.GlobalNext("A", &i, subs...); !hasNext {
        break
      }
      var allSubs = []interface{}{i}
      allSubs = append(subs, allSubs...)
      hasValue, hasSubNode := connection.GlobalIsDefined("A", allSubs...)
      if hasValue {
        var value string
        connection.GlobalGet("A", &value, allSubs...)
        fmt.Printf("%v = %#v\n", globalFull("A", allSubs...), value)
      }
      if hasSubNode {
        queryGlobal("A", allSubs...)
      }
    }
  }

  queryGlobal("A")

}