Very interesting question, could you please raise the issue in GitHub repository for the project.

We would need a bit more details about it, what you have in your SourceControl Class, and what do you expect.

But, be aware, that this feature was not completely implemented at the moment. It may not implement all the features available in Studio, due to some differences in architecture.

Permission denied issues come from a non-root environment configured for the latest few versions of IRIS. And, so, you don't have access to folders, out of access of user irisowner, which runs IRIS inside. This user has access to his home folder - /home/irisowner, and /usr/irissys, where IRIS installed. But you should know that anything created on a filesystem inside the container will disappear after its recreation. And it's how it supposed to work. If you need access from outside the container to created folder, or keep it save even when the container re-created, you have to bind some folder on your local filesystem inside the container, with --volume|-v option (do not forget to give permission to do it in docker settings).

I suppose, there is no way how to run Community Edition directly if you have so many cores, at least, yet. And at the moment, you can use Docker or virtualization, and Docker I would say preferable way.

So, you tried to debug INT code, and it did not work properly? Is it reproducible, and what will happen if you recompile it? And, still interesting how it will be in VSCode at the same time.

Just curious, did you miss anything in VSCode, or you faced some issues there, so, you decided to stay with Studio? You may answer me in direct messages, to keep this topic clear.

After a brief look at the tif format, it found to be quite tricky to get ImageSize.

tif(folder, filename) {
#define READWORD $sconvert(fs.Read(2),"U2",endian)
#define READLONG $sconvert(fs.Read(4),"U4",endian)
#define WORD(%val) $sconvert(%val,"U2",endian)
#define LONG(%val) $sconvert(%val,"U4",endian)

  Set fs = ##class(%Stream.FileBinary).%New()
  Set fs.Filename = ##class(%File).NormalizeFilename(filename, folder)
  Set FileSize = fs.Size
  
  Set Width = 0, Height = 0

  Set Identifier = fs.Read(2)
  If Identifier=$Char(73,73) {
    Set endian = 0
  } ElseIf Identifier=$Char(77,77) {
    Set endian = 1
  } Else {
    Throw "Bad Format"
  }
  Set Version = fs.Read(2)

  Set IFDOffset = $$$READLONG
  
  Do {
    Do fs.MoveTo(IFDOffset+1)
    
    Set NumDirEntries = $$$READWORD
    For i=1:1:NumDirEntries {
      Set tag = fs.Read(12)
      Set TagID = $$$WORD($Extract(tag,1,2))
      Set DataType = $$$WORD($Extract(tag,3,4))
      If (TagID=256)||(TagID=257) {
        Set Value = -1
        If DataType=3 Set Value = $$$WORD($Extract(tag,9,12))
        If DataType=4 Set Value = $$$LONG($Extract(tag,9,12))
        Set:TagID=256 Width = Value
        Set:TagID=257 Height = Value
      }
    }
    Set NextIFDOffset = $$$READLONG
    Set IFDOffset = NextIFDOffset
    
    Quit:(Height>0)&&(Width>0)
  } While NextIFDOffset>0

  ZWrite Height,Width
}

with landslide situations.

I don't understand what you mean.

You should understand that ObjectScript is not a good way, to deal with such data as pictures, it's not a task for databases to deal with pictures on a low-level. If you need it on ObjectScript level, I would recommend using imagemagick tool, which is external for sure, and available for any platform. But you will get a lot of functionality. and getting image info as well, and you will not be limited by tiff format only. And in addition you will get the ability to do some other stuff with images, scaling, drawing conversion, and so on, it's very powerful.