Unable to run GEMM on Xilinx ZCU102

Hi all,
I am following this website https://spatial-lang.org/targetting-devices to try build and run the GEMM demo on my Xilinx ZCU102. I am able to build it but I fail to run it so far. This issue might be quite naive as I think the reason why I fail to run the app is probably because I didn't set the arguments correctly... Please refer to the attached image for more details.

Hope someone can shed some light on this.
Thanks in advance.
Ruiqi

By the way, I am also unable to run GEMM using Scala simulation.
(base) ruiqi@ruiqi-GP62MVR-6RF:~/spatial-quickstart/gen/GEMM$ bash run.sh "<0: 256> <2: 256>"
[info] Loading project definition from /home/ruiqi/spatial-quickstart/gen/GEMM/project
[info] Loading settings from build.sbt ...
[info] Set current project to spatial-app (in build file:/home/ruiqi/spatial-quickstart/gen/GEMM/)
[info] Running Main <0: 256> <2: 256>
[error] (run-main-0) java.lang.UnsupportedOperationException: empty.reduceLeft
[error] java.lang.UnsupportedOperationException: empty.reduceLeft
[error] 	at scala.collection.TraversableOnce.reduceLeft(TraversableOnce.scala:180)
[error] 	at scala.collection.TraversableOnce.reduceLeft$(TraversableOnce.scala:178)
[error] 	at scala.collection.mutable.ArrayOps$ofRef.scala$collection$IndexedSeqOptimized$$super$reduceLeft(ArrayOps.scala:194)
[error] 	at scala.collection.IndexedSeqOptimized.reduceLeft(IndexedSeqOptimized.scala:56)
[error] 	at scala.collection.IndexedSeqOptimized.reduceLeft$(IndexedSeqOptimized.scala:72)
[error] 	at scala.collection.mutable.ArrayOps$ofRef.reduceLeft(ArrayOps.scala:194)
[error] 	at scala.collection.TraversableOnce.reduce(TraversableOnce.scala:208)
[error] 	at scala.collection.TraversableOnce.reduce$(TraversableOnce.scala:208)
[error] 	at scala.collection.mutable.ArrayOps$ofRef.reduce(ArrayOps.scala:194)
[error] 	at Main$Block1Chunker0$2$.$anonfun$gen$5(Main.scala:130)
[error] 	at Main$Block1Chunker0$2$.$anonfun$gen$5$adapted(Main.scala:114)
[error] 	at scala.Array$.tabulate(Array.scala:330)
[error] 	at Main$Block1Chunker0$2$.gen(Main.scala:114)
[error] 	at Main$.main(Main.scala:207)
[error] 	at Main.main(Main.scala)
[error] 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error] 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[error] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error] 	at java.lang.reflect.Method.invoke(Method.java:498)
[error] 	at sbt.Run.invokeMain(Run.scala:93)
[error] 	at sbt.Run.run0(Run.scala:87)
[error] 	at sbt.Run.execute$1(Run.scala:65)
[error] 	at sbt.Run.$anonfun$run$4(Run.scala:77)
[error] 	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error] 	at sbt.util.InterfaceUtil$$anon$1.get(InterfaceUtil.scala:10)
[error] 	at sbt.TrapExit$App.run(TrapExit.scala:252)
[error] 	at java.lang.Thread.run(Thread.java:748)
[error] java.lang.RuntimeException: Nonzero exit code: 1
[error] 	at sbt.Run$.executeTrapExit(Run.scala:124)
[error] 	at sbt.Run.run(Run.scala:77)
[error] 	at sbt.Defaults$.$anonfun$bgRunTask$5(Defaults.scala:1169)
[error] 	at sbt.Defaults$.$anonfun$bgRunTask$5$adapted(Defaults.scala:1164)
[error] 	at sbt.internal.BackgroundThreadPool.$anonfun$run$1(DefaultBackgroundJobService.scala:366)
[error] 	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error] 	at scala.util.Try$.apply(Try.scala:209)
[error] 	at sbt.internal.BackgroundThreadPool$BackgroundRunnable.run(DefaultBackgroundJobService.scala:289)
[error] 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error] 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error] 	at java.lang.Thread.run(Thread.java:748)
[error] (Compile / run) Nonzero exit code: 1
[error] Total time: 1 s, completed 23-Jul-2020 14:16:52

Can you try running with bash run.sh 128 128 128?  I don't think the arg parsing knows how to extract values out of <>, it is just trying split the arguments by spaces.
For debugging the zcu run, here is what a successful run may look like:
root@holodeck-zcu102:~/DRAMAccelTest# sudo ./Top
[WARNING]: DELITE_NUM_THREADS undefined, defaulting to 1
Executing with 1 thread(s)
placing fringeScalarBase at 7f9dbe2000
placing fringeMemBase at 7f7d847000
placing resetHandshakePtr at 7f9dbd2000
/lib/firmware ~/DRAMAccelTest
Flashing bitstream...
~/DRAMAccelTest
accel.bit.bin bitstream loaded onto fpga!

There are a few suspicious things going on with the printout you pasted so we can try to do this step by step to see where the issue may be.
When you move the tar.gz to the fpga and unzip it, there should be a verilog/ directory with accel.bit.bin.  Try flashing this to the fpga with the prog_fpga script and see if that succeeds:
root@holodeck-zcu102:~/DRAMAccelTest/verilog# prog_fpga accel.bit.bin
/lib/firmware ~/DRAMAccelTest/verilog
Flashing bitstream...
~/DRAMAccelTest/verilog
accel.bit.bin bitstream loaded onto fpga!

Then you can try poking the status regs with devmem2 and see if the spatial IP has been properly memory mapped.  The command reg should be 0x400000000 and the status reg should be 0x400000008.  Writing 2 to the command reg should reset the spatial IP, and writing 1 should enable your app.  When the app is done executing, reading 0x400000008 should give you a value of 1.  If your app (like gemm) has dram pointers or relies on other input arguments, trying to poke the regs without setting all the other arg ins could cause the board to crash so it may be worth compiling an app that does not access dram and does not have any argins for debugging the interface with the zcu.
Here is the sequence of commands I typically use for poking the regs manually:
devmem2 0x400000000 w 2
devmem2 0x400000000 w 0
devmem2 0x400000000 w 1
devmem2 0x400000008

Hi @mattfel1,
Thanks for the reply.
Here is what I got after I run "bash run.sh 128 128 128",

It seems that there is a problem setting clock frequency?
Here is what I got after I run "prog_fpga accel.bit.bin /lib/firmware",

The output is similar with yours, although I get this "unable to resolve ubuntu host: connection time out". I believe the bitstream is flashed successfully, as I can see the init LED light has turned from red to green after this command finish executing.
I also tried "./Top 128 128 128", and then there is seg fault,

Sorry I haven't try using devmem2, I just get the OS installed on my board and I still get internet access problem, I cannot apt-get things at the moment.
Thanks.

I have built and run some more test apps on my FPGA, the code all come from this website https://spatial-lang.org/hello-spatial.
Regarding the "Argin/argout interfaces" app, I can run it but it seems that the output result is wrong.

Regarding the "Reg, sram, and basic control" app, I can run the code but it seems that no output is printed.

Regarding the "drams and transfers" app, I get the same seg fault as I mentioned before.
All these apps be can executed properly using Scala simulation on my laptop.

Hi.  The printout for the argin/out gives me confidence that the fpga is flashing properly and the app is running.  I see that there is a bug on ZCU where I forgot to connect HostIOs so that explains why the output is just equal to the input (I will push a fix for this soon).
The println in the Reg + sram app is inside the accel, so these prints are ignored when it synthesizes the app.  That explains why there are no prints when you run that app.
The obvious problem causing the segfault is that it always puts the fringeMemBase pointer to fffffffffffff so we should try to figure out why that is happening.  The host is attempting to do the following (in zcu.sw-resources/FringeContextZCU.h)
    // Initialize pointer to fringeMemBase
    ptr = mmap(NULL, MEM_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, fd, FRINGE_MEM_BASEADDR);
    fringeMemBase = (u64) ptr;
    EPRINTF("placing fringeMemBase at %lx\n", fringeMemBase);
    fpgaMallocPtr = fringeMemBase;

The macros are defined in zcu.sw-resources/ZCUAddressMap.h
    #define FRINGE_MEM_BASEADDR     0x20000000
    #define MEM_SIZE                0x20000000

The intention here is to set the upper 2GB of ram on this board to be the shared dram space between the host and the PL, but it seems like your particular ZCU board and/or OS is not happy with this.  Can you start by playing around with these macros, maybe set the base to 0x10000000 and/or the mem size to 0x10000000 and see if that helps.  I know that on some of the zynq boards we did a hack where we set the boot args so that the os only sees the first 2 GB of RAM so that there are no unexpected problems with mmap or the cache, but I am pretty sure it was just the ZC706 that needed this and not the ZCU102.
When you change these header files, you just have to run make sw-clean && make sw in the generated directory of the app instead of make.  It should take 2 seconds to compile, you don't need to resynth the whole app.

Hi @mattfel1,
Thanks for the reply.
I think there is something wrong with my OS, I later tried using a pre-built image from Xilinx and the issue of fringeMemBase point to fffffffffffff gets away, even without modifying the value of FRINGE_MEM_BASEADDR and MEM_SIZE. Now I can run the "drams and transfers" app with correct output. I am also able to run GEMM but it seems I don't get the correct result? Please refer to the attached image for more details.

Thanks in advance.

That's good.  Can you point me to the gemm app you are running?  My initial guess is that the app is written in a way where burst-unaligned matrices are not handled correctly, but we have so many example versions of gemm floating around that I can't say for sure until I look at which version this is.

I am using the GEMM from here: https://github.com/luinardi/hypermapper/wiki/The-Spatial-Use-Case, just by following the instructions in the "Setup Spatial" section.

Can you try running with args 64 64 64?  I think this app is expected to fail with non tile aligned args.  It passed with these args for me and failed (in a different way) with 3 3 3.  If the drams and transfers app passes, I would expect this one to pass as well.  If this one still fails, we can keep debugging.

Just tried ./Top 64 64 64, and it seems that the code still fail to pass, what I got is still a bunch of 0s. There are two many outputs so I didn't screenshot everything.

by the way, have you tried running Spatial apps on a Linux OS with customized kernel, on ZCU102? (not on a prebuilt image). I can run Spatial apps on a prebuilt image but when I run them on my own Ubuntu with customized kernels I got that "fringeMemBase point to fffffffffffff" problem. I must have missed something when I am configuring the kernels, but I still can't figure out what I have missed. I followed the instruction here when creating on own Ubuntu: https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841937/Zynq+UltraScale+MPSoC+Ubuntu+part+2+-+Building+and+Running+the+Ubuntu+Desktop+From+Sources
I wonder is it possible for you to share how did you configure the Linux kernels in order to enable Spatial apps execution?

I spent a lot of time a while back trying to build the custom kernel on ZCU but I always ran into all kinds of problems and never got it working successfully.  I just used the prebuilt image here for this reason.  The specific one I used is the prebuilt that this doc points to: https://drive.google.com/drive/folders/0B8-S_nAzTew_bFNFVzlsdWMyUmM
The fact that your kernel runs for the correct amount of time (~1.5ms) but outputs all 0s makes me think that there is something bad happening with the cache, or the DRAM store isn't actually working properly.  Can we double check the DRAM interface with this modified app from the tutorial page?
import spatial.dsl._

@spatial object HelloSpatial extends SpatialApp {
  def main(args: Array[String]): Void = {
    // Create DRAM (malloc)
    val d = DRAM[Int](16)
    val d2 = DRAM[Int](4, 32)
    val r2 = DRAM[Int](4, 32)

    // Set DRAM (memcpy)
    val data = Array.fill[Int](16)(0)
    setMem(d, data)
    val data2 = (0 :: 4, 0 :: 32) { (i, j) => i + j }
    setMem(d2, data2)

    Accel {
      // Create 16-element SRAM
      val s = SRAM[Int](16)
      val s2 = SRAM[Int](4, 32)

      // Transfer data from d to s
      s load d(0 :: 16)
      s2 load d2

      // Add number to each element
      Foreach(16 by 1) { i => s(i) = s(i) + i }

      // Transfer data back to d
      d(0 :: 16) store s
      r2 store s2
    }

    // Print contents in memory
    printArray(getMem(d), "Result: ")
    printMatrix(getMatrix(r2), "Result2: ")

    val ind = Array.tabulate[Int](16) { i => i }

    println(r"1D correct: ${
      getMem(d) == data.zip(ind) {
        _ + _
      }
    }")
    println(r"2D correct: ${getMatrix(r2) == data2}")

  }
}

I build and run the app you provide and it seems that the DRAM interface is working properly?

Hmm this is strange.  I can't reproduce it but if you can run a few tests for me, it may help to point to the problem.

Can you send some logs to see if anything suspicious happened in there?  verilog-zcu/par_timing_summary.rpt and verilog-zcu/vivado.log

Can you try this app (removed all parallelization)

import spatial.dsl._

@spatial object GEMM extends SpatialApp {
  type T = FixPt[TRUE,_16,_16]

  def main(args: Array[String]): Unit = {
    // Get matrix dimensions from command line
    val m = args(0).to[Int];
    val n = args(1).to[Int];
    val p = args(2).to[Int];

    // Set bounds for arguments (default values for DSE model)
    bound(m) = 512
    bound(n) = 256
    bound(p) = 512

    // Pass dimensions to Accel
    val M = ArgIn[Int]
    val N = ArgIn[Int]
    val P = ArgIn[Int]
    setArg(M,m)
    setArg(N,n)
    setArg(P,p)

    // Allocate DRAM for matrices
    val A = DRAM[T](M, N)
    val B = DRAM[T](N, P)
    val C = DRAM[T](M, P)

    // Initialize data
    val a = (0::M,0::N){(i,j) => ((i*N + j)%8).to[T] }
    val b = (0::N,0::P){(i,j) => ((i*P + j)%8).to[T] }
    setMem(A,a)
    setMem(B,b)

    // Expose tile sizes as DSE parameters
    val bm = 16 (16 -> 8 -> 64)
    val bn = 16 (16 -> 16 -> 128)
    val bp = 16 (16 -> 16 -> 128)

    // Expose parallelization factors as DSE parameters
    val tileM_par = 1   (1 -> 3)
    val tileP_par = 1   (1 -> 3)
    val M_par = 1 (1 -> 2 -> 4)
    val P_par = 1 (1 -> 2 -> 4)
    val ip = 1  (1,2,8,32)
    val load_par = 1   (1,2,4,8,16)
    val store_par = 1   (1,2,4,8,16)

    // Design accelerator
    Accel {
      Foreach(M by bm par tileM_par, P by bp par tileP_par){(i,j) =>
        val tileC = SRAM[T](bm, bp)
        Foreach(N by bn){k =>
          val tileA = SRAM[T](bm, bn)
          val tileB = SRAM[T](bn, bp)
          tileA load A(i::i+bm, k::k+bn par load_par)
          tileB load B(k::k+bn, j::j+bp par load_par)
          Foreach(bm by 1 par M_par, bp by 1 par P_par){ (ii,jj) =>
            val prod = Reduce(Reg[T])(bn by 1 par ip){kk => tileA(ii, kk) * tileB(kk, jj) }{_+_}
            val prev = mux(k == 0, 0.to[T], tileC(ii,jj))
            tileC(ii,jj) = prev + prod.value
          }
        }
        C(i::i+bm, j::j+bp par store_par) store tileC
      }
    }

    // Compute expected matrix
    val gold = (0::M,0::P){(i,j) =>
      Array.tabulate(N){k => a(i,k) * b(k,j)}.reduce{_+_}
    }

    // Check result
    printMatrix(getMatrix(C), "Got: ")
    printMatrix(gold, "Wanted: ")
    println(r"PASS: ${gold === getMatrix(C)}")
    assert(gold === getMatrix(C))
  }

}

Also this app, which uses addition instead of multiplication.  I want to see if the mult IP is getting messed up somehow, so if this doesn't give you all 0's for C then we can look into that.

import spatial.dsl._

@spatial object GEMM extends SpatialApp {
  type T = FixPt[TRUE,_16,_16]

  def main(args: Array[String]): Unit = {
    // Get matrix dimensions from command line
    val m = args(0).to[Int];
    val n = args(1).to[Int];
    val p = args(2).to[Int];

    // Set bounds for arguments (default values for DSE model)
    bound(m) = 512
    bound(n) = 256
    bound(p) = 512

    // Pass dimensions to Accel
    val M = ArgIn[Int]
    val N = ArgIn[Int]
    val P = ArgIn[Int]
    setArg(M,m)
    setArg(N,n)
    setArg(P,p)

    // Allocate DRAM for matrices
    val A = DRAM[T](M, N)
    val B = DRAM[T](N, P)
    val C = DRAM[T](M, P)

    // Initialize data
    val a = (0::M,0::N){(i,j) => ((i*N + j)%8).to[T] }
    val b = (0::N,0::P){(i,j) => ((i*P + j)%8).to[T] }
    setMem(A,a)
    setMem(B,b)

    // Expose tile sizes as DSE parameters
    val bm = 16 (16 -> 8 -> 64)
    val bn = 16 (16 -> 16 -> 128)
    val bp = 16 (16 -> 16 -> 128)

    // Expose parallelization factors as DSE parameters
    val tileM_par = 1   (1 -> 3)
    val tileP_par = 1   (1 -> 3)
    val M_par = 1 (1 -> 2 -> 4)
    val P_par = 1 (1 -> 2 -> 4)
    val ip = 1  (1,2,8,32)
    val load_par = 1   (1,2,4,8,16)
    val store_par = 1   (1,2,4,8,16)

    // Design accelerator
    Accel {
      Foreach(M by bm par tileM_par, P by bp par tileP_par){(i,j) =>
        val tileC = SRAM[T](bm, bp)
        Foreach(N by bn){k =>
          val tileA = SRAM[T](bm, bn)
          val tileB = SRAM[T](bn, bp)
          tileA load A(i::i+bm, k::k+bn par load_par)
          tileB load B(k::k+bn, j::j+bp par load_par)
          Foreach(bm by 1 par M_par, bp by 1 par P_par){ (ii,jj) =>
            val prod = Reduce(Reg[T])(bn by 1 par ip){kk => tileA(ii, kk) + tileB(kk, jj) }{_+_}
            val prev = mux(k == 0, 0.to[T], tileC(ii,jj))
            tileC(ii,jj) = prev + prod.value
          }
        }
        C(i::i+bm, j::j+bp par store_par) store tileC
      }
    }

    // Compute expected matrix
    val gold = (0::M,0::P){(i,j) =>
      Array.tabulate(N){k => a(i,k) * b(k,j)}.reduce{_+_}
    }

    // Check result
    printMatrix(getMatrix(C), "Got: ")
    printMatrix(gold, "Wanted: ")
    println(r"PASS: ${gold === getMatrix(C)}")
    assert(gold === getMatrix(C))
  }

}

Unfortunately I think I still get all 0s for both of the new code you provide.
Screenshot of the GEMM without parallelization:

Screenshot of the GEMM that replace multiplication with addition:

And here is the log file you asked for the original GEMM:
vivado.log
par_timing_summary_GEMM.log
I also attached the log file of the new code in case you need it:
log file of the GEMM without parallelization:
vivado.log
par_timing_summary_GEMM_seq.log
log file of the GEMM using addition instead of multiplication:
vivado.log
par_timing_summary_GEMM_add.log

I am also developing my own accelerator using Spatial at the moment, I will see if I can get correct result in my case.

Another guess is that gcc may be doing something unexpected.  Maybe we can try again with Int instead of FixPt[TRUE,_16,_16] as our type:
import spatial.dsl._

@spatial object GEMM extends SpatialApp {
  type T = Int

  def main(args: Array[String]): Unit = {
    // Get matrix dimensions from command line
    val m = args(0).to[Int];
    val n = args(1).to[Int];
    val p = args(2).to[Int];

    // Set bounds for arguments (default values for DSE model)
    bound(m) = 512
    bound(n) = 256
    bound(p) = 512

    // Pass dimensions to Accel
    val M = ArgIn[Int]
    val N = ArgIn[Int]
    val P = ArgIn[Int]
    setArg(M,m)
    setArg(N,n)
    setArg(P,p)

    // Allocate DRAM for matrices
    val A = DRAM[T](M, N)
    val B = DRAM[T](N, P)
    val C = DRAM[T](M, P)

    // Initialize data
    val a = (0::M,0::N){(i,j) => ((i*N + j)%8).to[T] }
    val b = (0::N,0::P){(i,j) => ((i*P + j)%8).to[T] }
    setMem(A,a)
    setMem(B,b)

    // Expose tile sizes as DSE parameters
    val bm = 16 (16 -> 8 -> 64)
    val bn = 16 (16 -> 16 -> 128)
    val bp = 16 (16 -> 16 -> 128)

    // Expose parallelization factors as DSE parameters
    val tileM_par = 1   (1 -> 3)
    val tileP_par = 1   (1 -> 3)
    val M_par = 1 (1 -> 2 -> 4)
    val P_par = 1 (1 -> 2 -> 4)
    val ip = 1  (1,2,8,32)
    val load_par = 1   (1,2,4,8,16)
    val store_par = 1   (1,2,4,8,16)

    // Design accelerator
    Accel {
      Foreach(M by bm par tileM_par, P by bp par tileP_par){(i,j) =>
        val tileC = SRAM[T](bm, bp)
        Foreach(N by bn){k =>
          val tileA = SRAM[T](bm, bn)
          val tileB = SRAM[T](bn, bp)
          tileA load A(i::i+bm, k::k+bn par load_par)
          tileB load B(k::k+bn, j::j+bp par load_par)
          Foreach(bm by 1 par M_par, bp by 1 par P_par){ (ii,jj) =>
            val prod = Reduce(Reg[T])(bn by 1 par ip){kk => tileA(ii, kk) * tileB(kk, jj) }{_+_}
            val prev = mux(k == 0, 0.to[T], tileC(ii,jj))
            tileC(ii,jj) = prev + prod.value
          }
        }
        C(i::i+bm, j::j+bp par store_par) store tileC
      }
    }

    // Compute expected matrix
    val gold = (0::M,0::P){(i,j) =>
      Array.tabulate(N){k => a(i,k) * b(k,j)}.reduce{_+_}
    }

    // Check result
    printMatrix(getMatrix(C), "Got: ")
    printMatrix(gold, "Wanted: ")
    println(r"PASS: ${gold === getMatrix(C)}")
    assert(gold === getMatrix(C))
  }

}

I'm also curious about this one, where I just gutted the math and am basically doing the same thing as the DRAM test but with more loops.
import spatial.dsl._

@spatial object GEMM extends SpatialApp {
  type T = Int

  def main(args: Array[String]): Unit = {
    // Get matrix dimensions from command line
    val m = args(0).to[Int];
    val n = args(1).to[Int];
    val p = args(2).to[Int];

    // Set bounds for arguments (default values for DSE model)
    bound(m) = 512
    bound(n) = 256
    bound(p) = 512

    // Pass dimensions to Accel
    val M = ArgIn[Int]
    val N = ArgIn[Int]
    val P = ArgIn[Int]
    setArg(M,m)
    setArg(N,n)
    setArg(P,p)

    // Allocate DRAM for matrices
    val A = DRAM[T](M, N)
    val B = DRAM[T](N, P)
    val C = DRAM[T](M, P)

    // Initialize data
    val a = (0::M,0::N){(i,j) => ((i*N + j)%8).to[T] }
    val b = (0::N,0::P){(i,j) => ((i*P + j)%8).to[T] }
    setMem(A,a)
    setMem(B,b)

    // Expose tile sizes as DSE parameters
    val bm = 16 (16 -> 8 -> 64)
    val bn = 16 (16 -> 16 -> 128)
    val bp = 16 (16 -> 16 -> 128)

    // Expose parallelization factors as DSE parameters
    val tileM_par = 1   (1 -> 3)
    val tileP_par = 1   (1 -> 3)
    val M_par = 1 (1 -> 2 -> 4)
    val P_par = 1 (1 -> 2 -> 4)
    val ip = 1  (1,2,8,32)
    val load_par = 1   (1,2,4,8,16)
    val store_par = 1   (1,2,4,8,16)

    // Design accelerator
    Accel {
      Foreach(M by bm par tileM_par, P by bp par tileP_par){(i,j) =>
        val tileC = SRAM[T](bm, bp)
        Foreach(N by bn){k =>
          val tileA = SRAM[T](bm, bn)
          tileA load A(i::i+bm, k::k+bn par load_par)
          Foreach(bm by 1 par M_par, bp by 1 par P_par){ (ii,jj) =>
            tileC(ii,jj) = tilA(ii,kk)
          }
        }
        C(i::i+bm, j::j+bp par store_par) store tileC
      }
    }

    // Compute expected matrix
    val gold = (0::M,0::P){(i,j) =>
      Array.tabulate(N){k => a(i,k) * b(k,j)}.reduce{_+_}
    }

    // Check result
    printMatrix(getMatrix(C), "Got: ")
    printMatrix(gold, "Wanted: ")
    println(r"PASS: ${gold === getMatrix(C)}")
    assert(gold === getMatrix(C))
  }

}

The goal is to just get something other than all 0s on the output

Sadly simply change type T to Int doesn't seem to help, I still get all 0s on the output, for both piece of the code you provided. I will have a look at the TopHost.cpp file you mentioned and also to see if I can get any luck on my own accelerator. By the way you also mentioned that gcc might have done some unexpected thing, could it be the gcc version problem (just guessing)? I am currently using gcc 8.3.0

This issue has me very confused.  Do you compile with the --tune flag?  I don't think that should affect anything but I see that the dram load/store test we tried before doesn't expose a dse space so its remotely possible that if you compile with --tune flag on this app it forcefully changes the parameters we've declared.
I'm less suspicious of the gcc now, since the load/store test from before passed but the gemm with Int types still fails.  I am using aarch64-linux-gnu-g++ (Ubuntu/Linaro 7.4.0-1ubuntu1~18.04.1) 7.4.0 though.  The Makefile in zcu.sw-resources/Makefile is where it specifies which cross compiler it uses for building the sw.
Let's try testing the load and stores independently now.  Can you try these (I assume you caught my tilA typo in the previous test)?  I've removed the dse annotations and decoupled the loading of matrices A and B from the store of matrix C.
import spatial.dsl._

@spatial object LoadOnly extends SpatialApp {
  type T = Int

  def main(args: Array[String]): Unit = {
    // Get matrix dimensions from command line
    val m = args(0).to[Int];
    val n = args(1).to[Int];
    val p = args(2).to[Int];

    // Pass dimensions to Accel
    val M = ArgIn[Int]
    val N = ArgIn[Int]
    val P = ArgIn[Int]
    setArg(M,m)
    setArg(N,n)
    setArg(P,p)

    // Allocate DRAM for matrices
    val A = DRAM[T](M, N)
    val B = DRAM[T](N, P)
   val C = ArgOut[Int]

    // Initialize data
    val a = (0::M,0::N){(i,j) => ((i*N + j)%8).to[T] }
    val b = (0::N,0::P){(i,j) => ((i*P + j)%8).to[T] }
    setMem(A,a)
    setMem(B,b)

    // Expose tile sizes as DSE parameters
    val bm = 16
    val bn = 16
    val bp = 16

    // Expose parallelization factors as DSE parameters
    val tileM_par = 1
    val tileP_par = 1
    val M_par = 1
    val P_par = 1
    val ip = 1
    val load_par = 1
    val store_par = 1

    // Design accelerator
    Accel {
      Foreach(M by bm par tileM_par, P by bp par tileP_par){(i,j) =>
        val tileC = Reg[T](0)
        Foreach(N by bn){k =>
          val tileA = SRAM[T](bm, bn)
          val tileB = SRAM[T](bn, bp)
          tileA load A(i::i+bm, k::k+bn par load_par)
          tileB load B(k::k+bn, j::j+bp par load_par)
          Foreach(bm by 1 par M_par, bp by 1 par P_par){ (ii,jj) =>
             tileC = tileC.value + tileA(ii,kk) + tileB(ii,kk) // square tiles so this indexing is ok
          }
        }
        C := tileC.value
      }
    }
    println(r"${getArg(C)} should not be 0!")
    assert(getArg(C) != 0.to[T])
  }
}

import spatial.dsl._

@spatial object StoreOnly extends SpatialApp {
  type T = Int

  def main(args: Array[String]): Unit = {
    // Get matrix dimensions from command line
    val m = args(0).to[Int];
    val n = args(1).to[Int];
    val p = args(2).to[Int];

    // Pass dimensions to Accel
    val M = ArgIn[Int]
    val N = ArgIn[Int]
    val P = ArgIn[Int]
    setArg(M,m)
    setArg(N,n)
    setArg(P,p)

    // Allocate DRAM for matrices
    val C = DRAM[T](M, P)

    // Initialize data
    setMem(C,(0::M,0::P){(i,j) => 0.to[T]})

    // Expose tile sizes as DSE parameters
    val bm = 16
    val bn = 16
    val bp = 16

    // Expose parallelization factors as DSE parameters
    val tileM_par = 1
    val tileP_par = 1
    val M_par = 1
    val P_par = 1
    val ip = 1
    val load_par = 1
    val store_par = 1

    // Design accelerator
    Accel {
      Foreach(M by bm par tileM_par, P by bp par tileP_par){(i,j) =>
        val tileC = SRAM[T](bm,bp)
        Foreach(N by bn){k =>
          Foreach(bm by 1 par M_par, bp by 1 par P_par){ (ii,jj) =>
             tileC(ii,jj) = ii + jj + k
          }
        }
        C(i::i+bm, j::j+bp) store tileC
      }
    }
    printMatrix(getMatrix(C), "got:")
  }
}

I am sorry, I think I made a mistake that I failed to notice the second piece of code you sent on Wednesday is different from any other code you sent before, so I haven't test that.
I didn't use the --tune flag, so every time I compile the front end is like "bin/spatial GEMM --synth --fpga=ZCU", I will try that flag later.
About typos, I think there is probably another typo in the second piece of code you sent on Wednesday (the one with the tilA typo), so when I compile the front end the system complains that it cannot find the value kk in "tileC(ii,jj) = tilA(ii,kk)". I think it happens again in the first piece of code you sent today, so there is kk in "tileC = tileC.value + tileA(ii,kk) + tileB(ii,kk)", but I think kk is not actually declared in the scope? Is it actually jj in there?

Keep compiling without --tune.  That flag may only hurt.
Yes, the kk should actually be jj.

Bit of good news, regarding the second piece of code you sent on Wednesday, this time the output of C is finally not all 0s, although the result is still incorrect at the moment. As for the first piece of code you sent on Wednesday, that output of C is still all 0s.
Result of the second piece of code on Wednesday:

Result of StoreOnly:

Result of LoadOnly:

I am not using --tune flag when I compile the code that generate the above results.

Hi @mattfel1,
Apologize for all the confusions I caused before, I think I am now able to run Spatial examples, including GEMM on my ZCU102 board and get the correct result. I think there is nothing wrong with the code or the OS on my board, the root of the problem I encountered earlier seems to be that I failed to apply the change in the accelerator code to the generated bitstream, so the hardware generated in the programmable logic stays the same, I think that is why I keep getting the same and wrong result.
I revisited Spatial in the last few days and try it with some simple examples. I found out, at my end, if I want to actually apply the change in the accel code to the generated bitstream, it seems that I have to delete the relevant directory in gen/ and recompile and make everything again, i.e. simply run bin/spatial  --synth --fpga=ZCU then run make in the relevant directory in gen/ doesn't seem to work. I think this makes sense because if I just make without deleting the relevant directory, make will finish in just seconds. Considering when using Xilinx SDx, changes to kernel code will take quite some time to rebuild, I think a make that just finish in seconds doesn't seem ok. I also found out that under such circumstances I need to compile towards scala simulation first, then compiles towards hardware execution. If I compiles towards hardware directly, I will run into all kinds of Vivado related issue, things like cannot open design or cannot find design. I am not quite sure what is the reason behind this but these issues all seem to go away if I compile towards scala simulation first.
Thanks again for your help.

Hi.  That is exciting that you are able to run on the board!  Here is some info on what you described.
In between bin/spatial builds, we recommend wiping the generated directory completely.  What happens is:

bin/spatial creates a bunch of chisel files in gen//chisel/.  It is supposed to wipe this directory when you run bin/spatial, but it is possible there are OS-related things that prevent this from happening properly.   The symbol numbers may change if the spatial app changed, and sbt is trying to compile all of the chisel code even though some are from the old build and point to classes whose symbol numbers now refer to something else.
make in the generated directory creates a verilog/ folder there with the Vivado project and all that.  If you try to make the bitstream multiple times, it probably crashes with some vivado error complaining that the project already exists.  If you want to make twice in the generated dir, we recommend you just rm -rf the verilog directory (or make clean should work, I think).

I'm not sure why compiling towards scala simulation first and for hardware second fixes the errors for you, but it is certainly believable that this does some combination of cleaning the generated directory that solves all this staleness.


Crashing inputs discovered by AFL

I don't understand the code and I don't think I easily could, so I'll leave the debugging to you.
Thanks for your time,
Mike

README.txt

Thanks for doing this! There were overflow issues when calculating malloc sizes on huge input image dimensions. I suspect that an input image with zero height/width was problematic too.
Should be fixed now. Can you confirm?

I've been fuzzing for 22.8 million execs and haven't found anything. Absence of evidence isn't evidence of absence, but it definitely seems like you fixed these bugs.


Add az container connect-kubernetes

This checklist is used to make sure that common guidelines for a pull request are followed.
General Guidelines

[ ] The PR has modified HISTORY.rst describing any customer-facing, functional changes. Note that this does not include changes only to help content. (see Modifying change log).

Command Guidelines

[ ] Each command and parameter has a meaningful description.
[ ] Each new command has a test.

(see Authoring Command Modules)

View a preview at https://prompt.ws/r/Azure/azure-cli/4871
This is an experimental preview for @microsoft.com users.
(It may take a minute or two for your instance to be ready)
Email feedback to 'azfeedback' with subject 'Prompt Feedback'.


Capybara::Poltergeist::BrowserError

I got an error by following code.
when I check the screenshot, I found the element which has the ID.
In screenshot, page design was different from the page which I see in localhost.
Also, I got same error when I use have_content.
Please tell me a solution.
#spec
page.save_screenshot "tmp/capybara/screenshot-#{DateTime.now}.png"

find("#ID").trigger('click')

Capybara::Poltergeist::ObsoleteNode:
       The element you are trying to interact with is either not part of the DOM, or is not currently visible on the page (perhaps display: none is set). It's possible the element has been replaced by another element and you meant to interact with the new element. If so you need to do a new 'find' in order to get a reference to the new element.

     # ------------------
     # --- Caused by: ---
     # Capybara::Poltergeist::BrowserError:
     #   There was an error inside the PhantomJS portion of Poltergeist. If this is the error returned, and not the cause of a more detailed error response, this is probably a bug, so please report it.

ENV
rails 5.1.1
ruby 2.4.1
poltergeist (1.15.0)

Sorry, It was my mistake.
I was finding the elements within other area.


flynn-host bootstrap error

flynn-host version :
v20170719.0-81418bc
09:45:16.884597 check online-hosts
09:45:17.404917 require-env require-env
09:45:17.404949 resource-check resource-check
09:45:17.415840 run-app discoverd
09:45:17.799141 run-app discoverd error: bootstrap: host error while launching job: "error getting squashfs layer from https://dl.flynn.io/tuf?target=/layers/6dc530a0d72a16d92ebf587ac63d7ea243bcb0c351b100d485069586e52c145a.squashfs: verify: data too short"
flynn-host collect-debug-info :
https://gist.github.com/anonymous/a3fdbce0b6a2a58e0c3aebf389e357b2

Run sudo flynn-host download and then try again.

Flynn is unmaintained and our infrastructure will shut down on June 1, 2021. See the README for details.


Support cancellation during namer.

Support cancellation during namer.
Motivation

Will make LSP more responsive to slow path edits that occur during a slow path (e.g. syntax error fixes).
Test plan

It's not possible to test new cancellation spots like this, but the happy path (no cancelation) is covered by existing tests.

I'm currently checking to see if this causes any slowdown.

OK, it has an impact. I went in and modified serial loops to only check every 250 loop turns.
(I didn't see any change in perf for resolver, but it might have been hidden in the noise.)


AMP-63980 Update User Privacy API doc to reference managing user privacy notifications instruction

Update User Privacy API doc to reference managing user privacy notifications instruction
Amplitude Developer Docs PR
Description
Link to managing user privacy notifications instruction so that users using User Privacy API knows how to manage user privacy notifications.

Deadline
N/A
Change type

[ ] Doc bug fix. Fixes #[insert issue number]. Amplitude contributors include Jira issue number.
[*] Doc update.
[ ] New documentation.
[ ] Non-documentation related fix or update.

PR checklist:

[*] My documentation follows the style guidelines of this project.
[*] I previewed my documentation on a local server using mkdocs serve.
[*] Running mkdocs serve didn't generate any failures.
[*] I have performed a self-review of my own documentation.

@amplitude-dev-docs
@caseyamp

Thank you @joez2 !!!!


merge from template-coveralls

package.json

chore(deps): add ^6.2.0 remove ^6.1.0 (devDependencies.swagger-jsdoc)

.github/workflows/openapi.yml

chore: add actions/download-artifact@v2 (jobs.publish_doc.steps.uses)

.github/workflows/ci.yml

chore(actions): merge from template .github/workflows/ci.yml

:tada: This PR is included in version 5.0.89 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release
v5.0.89

Your semantic-release bot :package::rocket:


Makefile unable to write generated src

CMake runs perfectly fine, its just when I run make that it doesn't want to write the files

Are you using WSL (Windows Subsystem for Linux)? If so, did you perform some of the steps in Windows? Sometimes this can mess up things. Try also changing permissions for files.
Where fcssLexer come from? I do not recognize it from the tutorial.

managed to fix it was just a permissions problem like you mentioned


PLANNER-704: Workbench: scoreHolder global can only be of org.optaplanner.core.api.score.holder.ScoreHolder type (or subclass)

Add save/delete checks for 'scoreHolder' global definition.
Part of:
https://github.com/droolsjbpm/guvnor/pull/421
https://github.com/droolsjbpm/drools-wb/pull/413
https://github.com/droolsjbpm/optaplanner-wb/pull/138

Jenkins retest this.

@ge0ffrey Acked & all green here, could you please merge when you have some time? Thanks.


Use a generic path to ubuntu mirror

The specific path was tied to a specific upstream mirror, which we had
to stop using. The "trusty" url is a generic path that points to
whatever we're currently using for an upstream mirror.
Change-Id: I905cc4eb562113493beea9492456c58250e296cb

:+1: So happy this is finally done.

retest


Support for saving Tune Params for different VTX power

This pull request adds the ability to save params in DB and enable a set of values for different vtx power environments.

Just a thought, what if instead of default settings for 25, 200, and 600; a user could set up different profiles? For example, we have different locations with different RF environments , but if I could store track 1-25mw, track 1-200mw, track 2-25mw, etc. That would be pretty cool.

Just a question what relation should we use ? I see two way to do it.
First:
We use flat profile table with the following entries.

name
description
calibration offset
calibration threshold
triger threshold

Second
we have a profile table, with track table, with tune params table
The profile table:

id
name
track_id
tune_params_id

The track table:

id
name
description

The tune params table:

id
vtxpower
calibration offset
calibration threshold
triger threshold

First option is easier in terms of gui, user, development .
Second option is more flexible put more difficult to develop and in term of ui not so easy to have something easy to understand for user and probably a new html page will be needed.
What's your opinions about this ?

I would say go with the first option to keep it simple. What i'm picturing is that a user can adjust the parameters to fine tune, then they can hit a save button to add it to a profile, or something similar.

Done :-)


Merging main into gk-g0-app

Bringing gk-g0-app up to date with main, including recent moments work by @JonathanGorard for adding mixture formalisms and general relativity with and without a tetrad formalism, and by @johnson452 rearranging the canonical Poisson bracket infrastructure to support the hybrid basis and add support for 3x3v tensor p=1.

it'd be good if @JonathanGorard @johnson452 and others continue to dev in branches off of gk-g0-app from here on, until we merge gk-g0-app -> main, to avoid this cumbersome type of merge


Proposal: quick compare buttons at branch list

Gitea version (or commit ref): any
Git version: any
Operating system: any
Database: any
Can you reproduce the bug at https://try.gitea.io: no (server down)

Description
On /{user}/{repo}/branches  page, there is brief list of branches.
Github shows compare button or pull request link for each non-default branch, which compares branch to default branch (usually master) and proposes to create Pull request (or links to pull request itself).
This functionality is missing in gitea. Would be good to implement this in gitea.
Screenshots

Also for person who will edit template file (repos/branch/list.tmpl), this part looks misaligned:

{{if .IsDeleted}}
	<s>{{.Name}}</s>

{{$.i18n.Tr "repo.branch.deleted_by" .DeletedBranch.DeletedBy.Name}} {{TimeSinceUnix .DeletedBranch.DeletedUnix $.i18n.Lang}}

{{else}}
	{{.Name}}

{{$.i18n.Tr "org.repo_updated"}} {{TimeSince .Commit.Committer.When $.i18n.Lang}}

{{end}}

	 and {{end}} must swap places.

Related: https://github.com/go-gitea/gitea/issues/3683


Consider relicensing CC0 code to another license (MIT?)

Parts of this project have code under the CC0 license. However, Fedora changed its policy last year on CC0 for code such that it's not longer permitted. The reasoning can be viewed here.
Would you please consider relicensing the code under CC0-1.0 to MIT to align it with the rest of the project?

Hello Conan-Kudo.
The affected files are mostly from https://github.com/nemequ/portable-snippets/ & https://github.com/nemequ/hedley ; so I suggest asking there to dual-license with MIT; then I can sync the changes here.
For Hedley, I see that https://github.com/nemequ/hedley/issues/56 was already opened
The remaining files that would need dual-licensing are

amalgamate.py by @nemequ and @tlively
simde/simde-align.h by @nemequ and @jsbache
simde/simde-arch.h by @nemequ @himanshi18037 @rosbif @FlyGoat @ashnewmanjones @ktgw0316 @makise-homura @simba611 @tommyvct @Glitch18 @dhbloo
simde/simde-detect-clang.h by @nemequ and myself
simde/simde-f16.h contains portions that @nemequ heavily based upon CC0 code by @rygorous

As the authors of each file agree to dual-licensing (even a comment on this issue would suffice) then we can update the file headers & SPDX identifiers

I'm fine with the dual licensing.
Why did fedora change its policy that doesn't allow CC0 anymore?

Thanks @tommyvct ; their reasoning is at<EMAIL_ADDRESS>; my understanding is that Fedora doesn't like that CC0 doesn't include patent rights and thus makes it a bad fit for a code license (as opposed to a content license).

It's more that it explicitly doesn't allow/include a patent grant. A code license should either include a patent grant or not say anything about patents at all, basically.

Hi Michael,
It seems that I am concerned by a (probably minuscule) part of simde-arch.h.
I agree to dual-licensing with MIT for this file and also for any other
files you may find in SIMDe for which I have a credit.
Best regards,
Christopher Moore (aka rosbif)
Le 01/04/2023 à 11:09, Michael R. Crusoe a écrit :

Hello Conan-Kudo.
The affected files are mostly from
https://github.com/nemequ/portable-snippets/ &
https://github.com/nemequ/hedley ; so I suggest asking there to
dual-license with MIT; then I can sync the changes here.
For Hedley, I see that nemequ/hedley#56
https://github.com/nemequ/hedley/issues/56 was already opened
The remaining files that would need dual-licensing are

amalgamate.py
https://github.com/simd-everywhere/simde/blob/master/amalgamate.py
by @nemequ https://github.com/nemequ and @tlively
https://github.com/tlively
simde/simde-align.h
https://github.com/simd-everywhere/simde/blob/master/simde/simde-align.h
by @nemequ https://github.com/nemequ and @jsbache
https://github.com/jsbache
simde/simde-arch.h
https://github.com/simd-everywhere/simde/blob/master/simde/simde-arch.h
by @nemequ https://github.com/nemequ @himanshi18037
https://github.com/himanshi18037 @rosbif
https://github.com/rosbif @FlyGoat https://github.com/FlyGoat
@ashnewmanjones https://github.com/ashnewmanjones @ktgw0316
https://github.com/ktgw0316 @makise-homura
https://github.com/makise-homura @simba611
https://github.com/simba611 @tommyvct
https://github.com/tommyvct @Glitch18
https://github.com/Glitch18 @dhbloo https://github.com/dhbloo
simde/simde-detect-clang.h
https://github.com/simd-everywhere/simde/blob/master/simde/simde-detect-clang.h
by @nemequ https://github.com/nemequ and myself
simde/simde-f16.h
https://github.com/simd-everywhere/simde/blob/master/simde/simde-f16.h
contains portions that @nemequ https://github.com/nemequ heavily
based upon CC0 code by @rygorous https://github.com/rygorous

As the authors of each file agree to dual-licensing (even a comment on
this issue would suffice) then we can update the file headers & SPDX
identifiers
—
Reply to this email directly, view it on GitHub
https://github.com/simd-everywhere/simde/issues/999#issuecomment-1492887329,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAEHHK63LRUFV3P4XDF53R3W67WEPANCNFSM6AAAAAAWJXOT4E.
You are receiving this because you were mentioned.Message ID:
@.***>

I’m fine with dual licensing.

I'm fine with the dual licensing, too.

Dual licensing under MIT sounds good to me.

I'm fine with the dual licensing.

I am fine with dual licensing

I've had issues with github last month or two, so only now I was able to see this.
I'm perfectly fine with dual licensing too.

I've noted your agreement to dual-license. Feel free to unsubscribe from this issue :-)

@mr-c, where did you note the dual-license in this repository? Shall we add the dual license info in this repository's COPYING or README.md?

As we are missing Evan's consent, we can't license yet

As we are missing Evan's consent, we can't license yet

Sure. Okay.


The hide modifier not working on Popper in a Portal on older versions of popper.js

I have a project that is using react-popper directly and indirectly (through react-datepicker) and it uses modals with scrolling regions.  I want to make use of the hide modifier (which is enabled by default in popper.js), but in popper.js versions prior to 1.12.7, this is not working correctly as the data-x-out-of-boundaries attribute is not being added when the target scrolls out of view and the Popper is in a Portal.  The core issue was fixed in popper.js version 1.12.7.
The issue I'm truly having is getting popper.js 1.12.7 (or higher) installed.  In my project, I have the react-popper dependency set to ^0.7.4 which has its popper.js dependency set to ^1.12.5.  When I run npm install and then npm ls popper.js, I see it installs react-popper 0.7.4 with popper.js 1.12.6.  I'm not sure why it doesn't go to 1.12.9, but that may be an npm issue.
I created a pull request (#83) with updated examples that will show this "in action".  The third example is the new one I added.  It is a scrolling region with a target and a popper in it.  To show the hide modifier working and not working, I am able to replicate the behavior using two different package managers within react-popper (use the branch from pull request #83).  When I use npm, it installs popper.js 1.12.9 and works, but when I use yarn, it installs popper.js 1.12.5 and doesn't work.
Taking inconsistencies between npm and yarn out of the equation, could we just update the package.json file to set the popper.js dependency to ^1.12.9?

Can you try this out on the latest version please? I think the recent update I just published might have fixed this issue 🤞

@souporserious Yes, the 0.8.0 release addresses this issue.  Thank you!
Just a side note, although 0.8.0 is released (available on npmjs.com) and is documented in the change log, I don't see an 0.8.0 release or tag on GitHub.com.

Oops forgot to tag the release! I'll do that today. Thanks for the reminder 😅glad that fixed things!


Completed assignment

@joebottoms I've just completed the part 1 of assignment

Hi @zganunbc,
It looks like you've opened this issue in the repository for the github training module. As such, I don't see ant_code.R anywhere in here. Could you check that you're pushing your commits to the same repository that you pulled the assignment from? That should hopefully fix this issue and I can add the remaining exercises to your assignment. I'll leave this issue open for now


Vim9: no check for missing catch in try block at script level

Describe the bug
In Vim9 script, there is no check for a missing :catch in a :try block at the script level.
To Reproduce
Run this shell command:
vim -Nu NONE -S <(cat <<'EOF'
    vim9script
    try
        eval 0
    endtry
EOF
)

No error is given.
Expected behavior
An error is given, because the :try block doesn't contain any :catch/:finally clause.
Environment

Vim version: 8.2 Included patches: 1-3081
OS: Ubuntu 20.04.2 LTS
Terminal: XTerm(353)

Additional context
In compiled code, an error is given:
vim9script
def Func()
    try
        eval 0
    endtry
enddef
defcompile

E1032: Missing :catch or :finally

Which seems inconsistent.

Something else looks weird.  Consider this code:
vim9script
function Throw()
    try
        eval [][0]
    catch
        throw 'error'
    endtry
endfunction
silent! Throw()
try
    Unknown()
catch
endtry

E117: Unknown function: Unknown

The error should have been caught.  This is a known legacy bug, for which there is a todo item:

Problem that a previous silent ":throw" causes a following try/catch not to
work. (ZyX, 2013 Sep 28) With examples: (Malcolm Rowe, 2015 Dec 24)

https://github.com/vim/vim/blob/11a632d60bde616feb298d180108819ebb1d04a0/runtime/doc/todo.txt#L1423-L1424
Now, here is the same code, but this time Throw() is refactored into a Vim9 function:
vim9script
def Throw()
    try
        eval [][0]
    catch
        throw 'error'
    endtry
enddef
silent! Throw()
try
    Unknown()
catch
endtry

no error

This time, the error is correctly caught.
Was the legacy bug fixed in Vim9?  Or is it hidden by another Vim9 bug?

About the existing problem: using a :def function the commands are handled in a separate execution context.  Thus the side effect of the silent throw happens elsewhere.


Fix escaped backslash

Just a minor fix in the documentation

Codecov Report

Merging #509 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #509   +/-   ##
=======================================
  Coverage   84.97%   84.97%
=======================================
  Files          17       17
  Lines         406      406
=======================================
  Hits          345      345
  Misses         61       61

Impacted Files
Coverage Δ

lib/guardian/plug.ex
82.6% <ø> (ø)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 38aa025...592934a. Read the comment docs.

@aditya7iyengar thanks lot of the contribution.
I think the fix for this is adding the sigil  ~S at the beginning of the module docs, like
 @moduledoc ~S"""
....
"""

Don't quote me on it, but could you add that change and try it out and see if the issue persist?! (without your changes)


Comparison to singleton True should be expr "is"

comparisons to the singleton objects, like True, False, and None should be done with identity, not equality

@gyu-don pls review some small fixs. Thansk

Thanks for your PR. Yes, it looks good to me, but if verbose: is better.
Could you fix it?

Thanks for your PR. Yes, it looks good to me, but if verbose: is better.
Could you fix it?

Done. Thank you

Thanks.


[WIP] Review & improve CAPGoofy

Reviewing and diffing CAPGoofy against core CAPI.
Remaining folders that I didn't take a look at yet:

pkg/cloud
pkg/server

@fabriziopandini PTAL when you have some time on Monday. I'll continue with the remaining packages


bytes!() should encode to ASCII instead of UTF-8

 Issue by SimonSapin
Monday May 05, 2014 at 23:26 GMT
For earlier discussion, see https://github.com/rust-lang/rust/issues/13955
This issue was labelled with: B-RFC in the Rust repository

Update: The original title was bytes!() should encode to "Latin-1" instead of UTF-8, but Latin-1 turned out to be not such a good idea. See discussion below.

Currently, the bytes!() macro encodes character and string arguments as UTF-8. This gives surprising behavior such as bytes!("\xFF") == [0xC3, 0xBF] instead of [0xFF].
This macro should not assume UTF-8, since its typical use case is working with bytes in an encoding that is ASCII-compatible but is not necessarily UTF-8.
Instead, it should map code points in the  U+0000 .. U+00FF range to bytes with the same numerical value, and trigger a compile-time error for other code points. (This encoding sometimes known as "Latin-1", although the official definition of ISO/IEC 8859-1:1998 leaves some bytes unmapped.)

This can be closed, the bytes! macro has been removed.

The presence of issues like this seems to imply that any issues with the behavior of anything in the std lib belongs in this repo, which seems wrong to me. What's the official stance on this?

@reem well with bytes specifically, since it was removed, there is also an RFC to bring it back, so I thought this would be relevant.


Update package validation to 2.5.0

coverage: 99.315%. remained the same
when pulling e7b69c32e574f8703a18d9324112e562c4a37d80 on users/alexpeck/pckval2.5.0
into 1621b211c00d83ca1b0011173bf33deb912efdc9 on main.


tour: urls/path handling unclear

Context: https://tour.golang.org/methods/14
It might just have been me, but this exercise had me stumped until I asked an experience Go coder I know. My output on localhost:4000 was "404 page not found" and I could not understand what was wrong. I check a posted solution, and mine was virtually identical. When I ran the the posted solution it too gave a 404. My friend told me that the first argument in the http.Handle function specified the path. No where was the pointed out when this was function was introduced (for the first time in this exercise). While I understand we're expected to look things up in the documentation, this is one of those times where you wouldn't know what's wrong and where to look. I recommend briefly clarifying how http.Handle works.

Cause your server is just listen to 4000, 404 page not found is the http server donn't know which handler to handle your "/" request, see http.Handle(pattern, handler) function you will know

@adg I can think of a few ways of improving this:

register a handler for "/" in the code before the // your http.Handle calls here comment, or
link to the documentation for http.Handle, or
add something about the first argument being the path, or
add something about visiting localhost:4000/string and localhost:4000/struct

I think 2, 3, and 4 are a good first step.

I ended up doing 2 and 4. 3 seemed redundant.


Upgrade SPI dependency to 0.9.0

This changed a lot, includes those major changes:

Refactor FieldInformation inteface into MySqlColumnMetadata.
Refactor DataTypes as an enum MySqlType.
Refactor codec for the above changes.

I'd suggest keeping a 0.8.x branch that retains 0.8.x SPI compatibility and incrementing the version on main only.


Implement Mounter, trigger mount/unmount based on component equality

I realize #75 and #85 were split out, but the implementation is really intrinsically linked.  Since the issues appear to be stagnating somewhat, I thought I'd submit a PR to see if we can get some forward-progress here.

Thanks for sending this, and sorry I haven't had a chance to give it my full attention yet.
I'm concerned about the complexity of doMountUnmount, and the fact that it uses reflection. I think I need to consider more heavily in which situations users will need/want component mount and unmount events in the general case. One immediate question might be: Will normal users (not interacting with JS) want Mount to be a separate function than their component constructor NewMyComponent?
I'll delve into this further later. Sorry for the delays, again!

I understand the lack of time, no worries.
The complexity in doMountUnmount is at least as much about correcting Unmount behaviour as it is about enabling mounting.  As it stands, Unmount is broken any time the number of siblings changes, which can lead to leaking handles and other unexpected behaviour in user code.  The added complexity to support Mount is actually pretty low, if you consider that most of the code is required to make Unmount work.
I really do hope you'll consider JS/DOM interaction a valid use-case (I suspect this may be a moderately regular hurdle), though I think it'd still be worthwhile simply for API consistency.  It also supports component re-use.
I'm currently building against my fork and using Mount/Unmount to manage JS/DOM interactions, as well as Store subscribe/unsubscribe.

I really do hope you'll consider JS/DOM interaction a valid use-case (I suspect this may be a moderately regular hurdle), though I think it'd still be worthwhile simply for API consistency. It also supports component re-use.

FWIW I absolutely do consider that a valid use case. But I think these users will need very extensive integration, far more than what is provided here with simple Mount/Unmount. My theory is that we could allow these users to integrate via a js API directly, and reserve the Go Vecty API here for users who are not attempting JS/DOM interaction directly.

I've updated this to treat component inequality as a mount/unmount trigger, rather than type equality as otherwise references to a component that leak to the outside world from the mount hook can lead to unexpected behaviour if the component is replaced with a new instance.  Combined with #94 though, additional mount/unmount events can be avoided by using a single reference to a component across renders.

Closing in favour of #107 meta-pull.


Whats the diference between React_Starter and React_Full_Project??

Starter is a empty project and Full is same as demo


Hotfix/hide toolbar icons

Hide rad icons from the toolbar if the project is not git initialised

closes #102

This is a great example of the kind of PR structure I was talking about.  🎉
✅ single, self-contained change
✅ clear reference to the issue being addressed
Good job!! 👏🏼


Update generated docs + Add tutorials page link to docs

Improve title for FastRP + KNN example
Update generated docs
Link to generated notebook docs

Thank you for your contribution to the Graph Data Science Client project.

Before submitting this PR, please read Contributing to the Neo4j Ecosystem.
Make sure:

[x] You signed the Neo4j CLA (Contributor License Agreement) so that we are allowed to ship your code in our library
[x] Your contribution is covered by tests

We should have tooling to check these are in sync. When talking with Nicola, I think he wanted to give it a try as well.
The tooling is likely quite similar to what you added in #272
I would lean towards linking to the client docs there as well :thinking:

We should have tooling to check these are in sync. When talking with Nicola, I think he wanted to give it a try as well. The tooling is likely quite similar to what you added in #272
I would lean towards linking to the client docs there as well thinking But we first need to publish the client docs, maybe after the 1.6 cherry pick is live.

Ah, that's a good idea. Should be easy to set up


Release v0.1.1

Fixed

Fixed wrong compiled files.

Codecov Report

Merging #68 (b0478ab) into master (8d3a0db) will decrease coverage by 0.65%.
The diff coverage is n/a.

:exclamation: Current head b0478ab differs from pull request most recent head b30b03b. Consider uploading reports for the commit b30b03b to get more accurate results

@@            Coverage Diff             @@
##           master      #68      +/-   ##
==========================================
- Coverage   98.10%   97.44%   -0.66%
==========================================
  Files          62       51      -11
  Lines        1054      783     -271
  Branches      126      105      -21
==========================================
- Hits         1034      763     -271
  Misses         18       18
  Partials        2        2

Flag
Coverage Δ

cuaktask
93.18% <ø> (ø)

iocuak
97.48% <ø> (ø)

porygon
100.00% <ø> (ø)

porygon-typeorm
?

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

...m/src/crud/adapter/typeorm/DeleteTypeOrmAdapter.ts

...m/src/crud/adapter/typeorm/UpdateTypeOrmAdapter.ts

.../crud/modules/iocuak/TypeOrmCrudContainerModule.ts

...rud/modules/iocuak/TypeOrmDeleteContainerModule.ts

...orm/src/crud/adapter/typeorm/FindTypeOrmAdapter.ts

...rud/modules/iocuak/TypeOrmUpdateContainerModule.ts

...rm/src/crud/models/domain/CrudTypeOrmModuleType.ts

...m/src/crud/adapter/typeorm/InsertTypeOrmAdapter.ts

...utils/typeorm/findManyOptionsToFindOptionsWhere.ts

...rud/modules/iocuak/TypeOrmCreateContainerModule.ts

... and 1 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update e0ce458...b30b03b. Read the comment docs.


Possibly some extraneous debug statements?

https://github.com/hpeyerl/venstar_colortouch/blob/dc4f3c0a41c2850e9a67ee30b063c07c2ed478a8/src/venstarcolortouch/venstarcolortouch.py#L228
Would it be possible to remove this print statement? So if the function succeeds we don't see anything, but if it fails we see the error message listed here:
https://github.com/hpeyerl/venstar_colortouch/blob/dc4f3c0a41c2850e9a67ee30b063c07c2ed478a8/src/venstarcolortouch/venstarcolortouch.py#L231
Otherwise everytime you run a command, it starts filling up the log with success messages:
2019-09-06 18:02:00 INFO (MainThread) [homeassistant.setup] Setting up logger
Config directory: /config
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!

Sorry for the delay.  Not ignoring you; just busy.
Seems reasonable; if you submit a merge request I'll approve it.  Otherwise I can try to do something with it this weekend.

I'll work on this today or tomorrow.
Thank you,
Tyler Page
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Wednesday, September 11, 2019 11:47 PM, Herb Peyerl<EMAIL_ADDRESS>wrote:

Sorry for the delay. Not ignoring you; just busy.
Seems reasonable; if you submit a merge request I'll approve it. Otherwise I can try to do something with it this weekend.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.


Section on performance

Environments with a lot of tasks/nodes can overwhelm Elasticsearch; providing some indications on what metrics need to be watched for will surely help.

Fixed in master and 2.x


fix: adjust select options positioning

Description
As per title

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@cffc387). Click here to learn what that means.
The diff coverage is 88.23%.

@@           Coverage Diff           @@
##             main      #14   +/-   ##
=======================================
  Coverage        ?   94.59%
=======================================
  Files           ?       44
  Lines           ?      481
  Branches        ?      212
=======================================
  Hits            ?      455
  Misses          ?       25
  Partials        ?        1

:tada: This PR is included in version 0.26.1 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


官网好多链接都404了，建议更新一下

比如 http://servicecomb.apache.org/cn/docs/open-design/
开源微服务框架 Apache ServiceComb 的前身为华为云的 微服务引擎 CSE (Cloud Service Engine) 云服务,

Thanks @hwtayg and I think this issue should be moved to https://github.com/apache/servicecomb-website/issues.


[Resolver] Update Molinillo to 0.4.3

See https://github.com/CocoaPods/Molinillo/releases/0.4.3.
Closes https://github.com/bundler/bundler/issues/4276.

@homu r+

:pushpin: Commit 3e542b9 has been approved by segiddins

:hourglass: Testing commit 3e542b9 with merge 1328c77...

:sunny: Test successful - status


Subscriptions Reconnect solution

I noticed that graphql_flutter does not have a functional reconnection of subscriptions when the internet connection is interrupted, I created an implementation to take care of that and would like to integrate with the current package, my implementation has already been tested and is fully functional

Fee free to create a PR against beta, follow contributions guidelines here. Make sure to include tests and if possible update documentation where necessary.

@rullyalves would like to see your implementation. Thanks.

@mainawycliffe @rullyalves any idea when this solution will be available? I am looking for this solution to implement in one of my project. @rullyalves thanks for valuable solution.

@rullyalves are you able to create a PR for this?


Removed duplicated toggles

Q
A

Bug fix?
[ x]

New feature?
[ ]

New sample?
[ ]

What's in this Pull Request?
Removed duplicated toggles from the ControlsTest web part.

@GuidoZam many thanks for spotting this and submitting a PR to clean things up :)


x/mobile: when a panic happens, a long enough traceback deadlocks the runtime on Android

What version of Go are you using (go version)?

$ go version
go version go1.13.1 linux/amd64

Does this issue reproduce with the latest release?
Yes.
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home//.cache/go-build"
GOENV="/home//.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/opt/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/lib/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build557544076=/tmp/go-build -gno-record-gcc-switches"

What did you do?

I have an Go application compiled for Android with gomobile. When a panic happens, the runtime prints a traceback and quits. However, when this traceback is long enough, the application freezes and never quits.
Gomobile redirects stderr to Android (Android log tag being "GoLog"). When a panic happens, the world is frozen, so:

the goroutine lineLog does not consume anymore the pipe dup-ed to stderr;
at some point the pipe becomes full;
the runtime continues to write the long traceback in stderr and blocks until stderr is writable;
deadlock.

Disabling the gomobile's redirection from stderr makes the application crashes "properly".
Note that the runtime already redirect logs to Android (with the tag "Go"), so the redirection of stderr by gomobile seems redundant to me?
To reproduce, you can modify the runtime to println lot of lines when a panic is caught, until the runtime freezes.
What did you expect to see?
When a panic happens, and the resulting traceback is long enough, I expect the runtime to print the full traceback and quit.
What did you see instead?
When a panic happens, and the resulting traceback is long enough, I see the runtime prints a truncated traceback and freezes.

cc @eliasnaur, I know you don't maintain it anymore but it would be nice to know if the now built-in support in Go itself would enable to remove this bit in gomobile, or there were some other reason for it to exist?

AFAICT, the runtime only redirects its own printing (of crashes) to stderr. The gomobile redirect is for all writes to stderr (and stdout), not just the runtime's.
One fix is to rewrite the gomobile redirect in C(go).

Sample found at https://codelab.wordpress.com/2014/11/03/how-to-use-standard-output-streams-for-logging-in-android-apps/

Another idea would be to implement a buffered writer and only replace os.Stdout/Stderr. That won't redirect all stdout/stderr logging, but Go code would be fine.

Wonder if it's possible to let the gomobile directly send all logs to logd using the code similar to runtime/write_err_android.go. More desirably, would be nice if it allows users to turn it on and off - I found logging from some libraries is too chatty for mobile application use cases.

Proposal patch for this issue: https://github.com/golang/mobile/pull/40


Some GL fixes

The original pull request had some driver workarounds that i will keep in my 'tweaks' branch until further investigation.

Looks good to me, but could you please rebase the commit messages so that they are 72 characters at most for the first line? otherwise they get cut off (especially d408437 with only part of one word remaining). A longer summary after that is fine:
Short summary text, maximum 72 characters

Longer paragraph that details the change and any logic behind needing
to make the change, other impacts, future work etc.

5785f74 fixes GL errors that come up when running a replay on a strict driver that doesn't support GL_LUMINANCE (latest AMD for example)
d408437 fixes access violation when a persistently mapped buffer is destroyed on the next glMemoryBarrier


Added aws-sim provider

Added functionallity for an 'aws-sim' provider that can be used to simulate the AWS capacity blocks API.

Potential items that should be considered for this MR:

Exploring the edge cases for DescribeInstanceTopology endpoint, and how the API responds to incorrect input.
Test to make sure multiple "pages" work correctly within the simulated client
Add more test cases for the model structure
Do more in-depth validation of model structure on import

For a future PR: Since this is a simulated implementation, it should have a unit test.


Artifacts on last stable release have version marked as nightlly instead of matching tag

The binary artifacts attached to v0.6.4 all have -nightly instead of -v0.6.4 segments in the file name as previous releases did.

Sorry for the trouble.
It seems that the version tag in the release job is returning nightly instead of v0.6.4.
This is a bug in the release script, but I am not sure of the cause at this time.
I will continue to investigate.

I have fixed the release and will close this Issue.


Stutter/crash on large coordinates

Activating freecam on huge distances from 0/0 causes the game to freeze for a split second (further on for longer), and on ~503500 of any coordinate a guaranteed crash occurs. Multi-dimensional issue. Going up still causes stutter, but crash doesn't happen.

Fabric 1.20.1 version 1.21

I was unable to reproduce this on 1.20.1 with Freecam 1.2.1 on default settings. Could you share what settings you are using?

Could you also share the logs from when the crash occurred?

I have a heavily modded game, so it may be difficult to diagnose the reason. I'll have a look into removing optimization mods and I'll reach you out if I find something.
Crash report does not generate.
modlist.txt
latest.log
options.txt
freecam_settings.txt
https://youtu.be/qfr-srF1YK8

Just have finally discovered, that the issue is magically somehow caused my Serious Player Animation. Should be added to incompatibilities on fabric till author releases a fix.


Profiling

VSCode Version: Code - Insiders 1.13.0-insider (f977399d58f7b64db35047fafe0c6e59e15f11d5, 2017-06-02T10:54:04.063Z)
OS Version: Windows_NT ia32 10.0.15063
CPUs: Intel(R) Core(TM) i5 CPU       M 430  @ 2.27GHz (4 x 2261)
Memory (System): 2.99GB (0.28GB free)
Memory (Process): 159.67MB working set (214.04MB peak, 132.84MB private, 36.66MB shared)
Load (avg): 0, 0, 0
VM: 0%
Initial Startup: yes
Screen Reader: no
Empty Workspace: no
Timings:

Component
Task
Time (ms)

main
start => app.isReady
2545

main
app.isReady => window.loadUrl()
565

renderer
window.loadUrl() => begin to require(workbench.main.js)
2559

renderer
require(workbench.main.js)
15235

renderer
create extension host => extensions onReady()
4681

renderer
restore viewlet
undefined

renderer
restore editor view state
undefined

renderer
overall workbench load
NaN

main + renderer
start => extensions ready
25852

main + renderer
start => workbench ready
NaN

:warning: Make
cf8e_main.cpuprofile.txt
sure to attach these files: :warn
cf8e_renderer.cpuprofile.txt
ing:
-C:\Users\yuguu\cf8e_main.cpuprofile.txt
-C:\Users\yuguu\cf8e_renderer.cpuprofile.txt

Thanks, we could see that is because of a delayed app ready event. Closing as dupe of #22087


feat(refactor): enforce mandatory function prefix in regex

Ensures that the function declaration must start with the "function" keyword, followed by one space before the actual function name.
Related to the issue 106.
Once this PR is merged I can modify the unit tests and include the refactoring changes.

Please check my comment at https://github.com/grindery-io/grindery-nexus-connector-web3/issues/106#issuecomment-1655402630 .

Thanks looks good to me, pending @SAPikachu :)


retitle Explanation section

As per https://documentation.divio.com/explanation/:

Explanation, or discussions, clarify and illuminate a particular topic. They broaden the documentation’s coverage of a topic.
They are understanding-oriented.
Explanations can equally well be described as discussions; they are discursive in nature. They are a chance for the documentation to relax and step back from the software, taking a wider view, illuminating it from a higher level or even from different perspectives. You might imagine a discussion document being read at leisure, rather than over the code.
This section of documentation is rarely explicitly created, and instead, snippets of explanation are scattered amongst other sections. Sometimes, the section exists, but has a name such as Background or Other notes or Key topics - these names are not always useful.
Discussions are less easy to create than it might seem - things that are straightforward to explain when you have the starting-point of someone’s question are less easy when you have a blank page and have to write down something about it.
A topic isn’t defined by a specific task you want to achieve, like a how-to guide, or what you want the user to learn, like a tutorial. It’s not defined by a piece of the machinery, like reference material. It’s defined by what you think is a reasonable area to try to cover at one time, so the division of topics for discussion can sometimes be a little arbitrary.

What would be a more helpful title for Explanations?

@cyunis @thehannahfink feel free to add feedback

i would put a hold on retitling this until we've discussed ddd as a team


Upload vaadin's component not working properly inside app-layout on phone

Hi, I'm using the vaadin-app-layout menu and one of the views has the vaadin component
com.vaadin.ui.Upload.
The Upload component allows a user to upload files to the server. I'm using Upload with immediate mode, in this mode is showed a button for selecting a file.
It's working correctly on PC, I mean, you can choose the view on the menu and then  the Upload component is showed, if you click the Upload's button it opens a new windows where you can choose a file of your computer to upload. The issue appears in mobile devices, the Upload's button ignores when you touch in the normal touchable area, it only listen (opens the window to chose the file) when  you touch on the bounds of the button.
It could seems an Upload component issue, but it works correctly if I don't use vaadin-app-layout.
Do you have any idea of  what on the vaadin-app-layout  could be interfering with the touchable area of the Upload's button?
I've attached MyUI, the view which includes the Upload component and CustomUploader (class which implements a basic Upload component).
Thanks in advance.
MyUI
@Push(transport = Transport.LONG_POLLING)
@PushStateNavigation
@Viewport("width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no")
@Title("App Layout Demo")
@SuppressWarnings("serial")
@Theme("mytheme")
public class MyUI extends UI {
    DefaultNotificationHolder notifications = new DefaultNotificationHolder();
    DefaultBadgeHolder badge = new DefaultBadgeHolder();

    @Override
    protected void init(VaadinRequest vaadinRequest) {

        DefaultNotificationHolder notifications = new DefaultNotificationHolder();
        DefaultBadgeHolder badge = new DefaultBadgeHolder();

        setContent(AppLayout.getDefaultBuilder(Behaviour.LEFT_RESPONSIVE_HYBRID)
                .withNavigator(container -> new Navigator(this, container))
                .withTitle("App Layout Plain Basic Example")
                .addToAppBar(new AppBarNotificationButton(notifications, true))
                .withViewNameInterceptor(new DefaultViewNameInterceptor())
                .withDefaultNavigationView(View1.class)
                .withDesign(AppLayoutDesign.MATERIAL)
                .withNavigatorConsumer(navigator -> {/* Do something with it */})
                .add(new MenuHeader("Version 1.0.2", new ThemeResource("logo.png")), HEADER)
                .add("Home", VaadinIcons.HOME, badge, View1.class)
                .add(SubmenuBuilder.get("My Submenu", VaadinIcons.PLUS)
                        .add("Charts", "test", VaadinIcons.SPLINE_CHART, View2.class)
                        .add("Contact", VaadinIcons.CONNECT, View3.class)
                        .add("More", VaadinIcons.COG, View4.class)
                        .build())
                .add("Menu", VaadinIcons.MENU, View5.class)
                .add("Elements", VaadinIcons.LIST, View6.class)
                .build());
    }

    @WebServlet(urlPatterns = "/*", name = "MyUIServlet", asyncSupported = true)
    @VaadinServletConfiguration(ui = MyUI.class, productionMode = false)
    public static class MyUIServlet extends VaadinServlet {
    }
}

View which contains Upload
@MenuIcon(VaadinIcons.HOME)
public class View1 extends ExampleView {
	private static final long serialVersionUID = -8120902053232284203L;

	@Override
	VerticalLayout getView() {

        final VerticalLayout layout = new VerticalLayout();

        CustomUploader cu = new CustomUploader();

        layout.addComponents(cu);

        return layout;
    }

}

CustomUploader
public class CustomUploader extends HorizontalLayout {
	private static final long serialVersionUID = -8597656423721334862L;
	CustomReceiver receiver;
	Upload upload;

	public CustomUploader() {
		super();

		receiver = new CustomReceiver();

		upload = new Upload(null, receiver);
		upload.setImmediateMode(true);
		upload.setButtonCaption("Upload File");

		upload.addSucceededListener(event -> {
			final StreamSource streamSource = () -> {
				if (receiver.getBaos() != null) {
					final byte[] byteArray = receiver.getBaos().toByteArray();
					return new ByteArrayInputStream(byteArray);
				}
				return null;
			};
			FileDownloader fileDownloader = null;
			final StreamResource resource = new StreamResource(streamSource, event.getFilename());
			resource.setMIMEType(event.getMIMEType());
			fileDownloader = new FileDownloader(resource);
			upload.setButtonCaption(receiver.filename);
		});
		addComponents(upload);
	}
}

class CustomReceiver implements Receiver {
	private static final long serialVersionUID = -355650363137947012L;
	ByteArrayOutputStream baos;
	String filename;
	String MIMEType;

	@Override
	public OutputStream receiveUpload(final String filename, final String MIMEType) {
		baos = new ByteArrayOutputStream();
		this.filename = filename;
		this.MIMEType = MIMEType;

		OutputStream os = new OutputStream() {

			@Override
			public void write(final int b) {
				baos.write(b);
			}
		};

		return os;
	}

	ByteArrayOutputStream getBaos() {
		return baos;
	}
}

@JDo-Jimenez Please put your code inside a working Github repository and post it here so I can review it.

Thanks you very much for your quick answer. I've just created a repository. The view where you can find the Upload component is View1.java.
Thanks.

I can confirm this issue. But I have no clue what could be the reason behind it 😞.

Check this source code:
https://github.com/vaadin/framework/blob/master/client/src/main/java/com/vaadin/client/ui/VUpload.java
Line 148 and 195 is interesting for us.
The upload button is essentially a button and a hidden file input element. If you click the button vaadin clicks the element and the file browser pops up. I believe this addon somehow overlays the screen and the hidden file input cannot be clicked. I can't investigate further on this at the moment, but here is a working workaround:
 input[type="file"] {
    display: block !important;
    width: 100% !important;
    height: 100% !important;
    opacity: 0 !important;
    overflow: hidden !important;
    z-index: 100 !important;
    margin-top: -20px;
    top: 20px;
  }

This css will position the hidden input field above the button, so when you click the button you will actually click the hidden input field and it will open the file chooser.


Greater Elemental Damage Runes

Doesn't look like this is working with the current IWR implementation.
ex. Greater Flaming - Damage dealt by this weapon (including the persistent fire damage) ignores the target’s fire resistance.

Ignoring residences isn't yet supported.


Update status of track

This issue is part of the migration to v3. You can read full details about the various changes here.
There are several new features in Exercism v3 for tracks to build. To selectively enable these features on the Exercism v3 website, each track must keep track of the status of the following features:

Concept Exercises have been built
A test runner has been implemented
A representer has been implemented
An analyzer has been implemented

The status of these features is specified in the top-level "status" field in the track's config.json, as specified in the spec.
Goal
The "status" field in the config.json file should be updated to indicate the status of the features for this track. The list of features is defined in the spec.
Example
{
  "status": {
    "concept_exercises": true,
    "test_runner": true,
    "representer": false,
    "analyzer": false
  }
}

Tracking
https://github.com/exercism/v3-launch/issues/12

All true here
https://github.com/exercism/ruby/blob/ed5bd9ef42327ef8db10966fbbc1f724c51a4290/config.json#L4-L10

We can probably close this then.


Remove deprecation warning:

warning: `default_features` is deprecated in favor of `default-features` and will not work in the 2024 edition
(in the `tokio` dependency)
    Checking itoa v1.0.9
    Checking serde v1.0.192
   Compiling fs-err v2.11.0 (/home/runner/work/fs-err/fs-err)
    Checking ryu v1.0.15
    Checking serde_json v1.0.100

I'm getting an unexpected error in CI and not sure why. This PR was an attempt to diagnose it. There's still a deprecation warning in the output, but it's not related to this failure:
error: unexpected `cfg` condition name: `rustc_1_63`
  --> src/path.rs:[16](https://github.com/andrewhickman/fs-err/actions/runs/9925686637/job/27418370104#step:8:17):11
   |
16 |     #[cfg(rustc_1_63)]
   |           ^^^^^^^^^^
   |
   = help: expected names are: `clippy`, `debug_assertions`, `doc`, `docsrs`, `doctest`, `feature`, `fmt_debug`, `miri`, `overflow_checks`, `panic`, `proc_macro`, `relocation_model`, `rustfmt`, `sanitize`, `sanitizer_cfi_generalize_pointers`, `sanitizer_cfi_normalize_integers`, `target_abi`, `target_arch`, `target_endian`, `target_env`, `target_family`, `target_feature`, `target_has_atomic`, `target_has_atomic_equal_alignment`, `target_has_atomic_load_store`, `target_os`, `target_pointer_width`, `target_thread_local`, `target_vendor`, `test`, `ub_checks`, `unix`, and `windows`
   = help: consider using a Cargo feature instead
   = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
            [lints.rust]
            unexpected_cfgs = { level = "warn", check-cfg = ['cfg(rustc_1_63)'] }
   = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(rustc_1_63)");` to the top of the `build.rs`
   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
   = note: `-D unexpected-cfgs` implied by `-D warnings`
   = help: to override `-D warnings` add `#[allow(unexpected_cfgs)]`

That cfg should be emitted by autocfg which was added in my PR https://github.com/andrewhickman/fs-err/blob/25ac4217fed035c9283f8612d29305d480de40d6/build.rs but for some reason it's not working.
Notably it doesn't look like autocfg is installed in the build output:
Run actions-rs/cargo@v1
/home/runner/.cargo/bin/cargo test
 Downloading crates ...
  Downloaded itoa v1.0.[9](https://github.com/andrewhickman/fs-err/actions/runs/11391081315/job/31694081963?pr=61#step:6:10)
  Downloaded serde v1.0.192
  Downloaded ryu v1.0.15
  Downloaded serde_json v1.0.[10](https://github.com/andrewhickman/fs-err/actions/runs/11391081315/job/31694081963?pr=61#step:6:11)0
   Compiling serde v1.0.192
   Compiling serde_json v1.0.100
   Compiling ryu v1.0.15
   Compiling itoa v1.0.9
warning: unexpected `cfg` condition name: `rustc_1_63`
  --> src/path.rs:16:[11](https://github.com/andrewhickman/fs-err/actions/runs/11391081315/job/31694081963?pr=61#step:6:12)
   |
16 |     #[cfg(rustc_1_63)]
   |           ^^^^^^^^^^
   |
   = help: expected names are: `clippy`, `debug_assertions`, `doc`, `docsrs`, `doctest`, `feature`, `fmt_debug`, `miri`, `overflow_checks`, `panic`, `proc_macro`, `relocation_model`, `rustfmt`, `sanitize`, `sanitizer_cfi_generalize_pointers`, `sanitizer_cfi_normalize_integers`, `target_abi`, `target_arch`, `target_endian`, `target_env`, `target_family`, `target_feature`, `target_has_atomic`, `target_has_atomic_equal_alignment`, `target_has_atomic_load_store`, `target_os`, `target_pointer_width`, `target_thread_local`, `target_vendor`, `test`, `ub_checks`, `unix`, and `windows`
   = help: consider using a Cargo feature instead
   = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
            [lints.rust]
            unexpected_cfgs = { level = "warn", check-cfg = ['cfg(rustc_1_63)'] }
   = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(rustc_1_63)");` to the top of the `build.rs`
   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
   = note: `#[warn(unexpected_cfgs)]` on by default

Figured it out https://github.com/cuviper/autocfg/pull/70


[Docs] create documentation for download function

Describe the problem
We do not have documentation for our download function today. The function can be triggered by the action selector of a widget such as the onClick of a button.

Duplicate of #852


⚠ Bofrost.lu has degraded performance

In 46af1e9, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1845 ms

Resolved: Bofrost.lu performance has improved in 30a6824 after 30 minutes.


[Misc] upload files larger than 5GB in size

Hi team,
I'm working on a project using SWB and my customer has asked if it's possible to be able to upload files that are larger than 5GB in size. I'm aware that this is possible using the S3 multipart upload API solution, but my concern is that with SWB being predominantly a serves environment I can't think of a way around this without using Step Functions. Otherwise I'm concerned that I would be designing in anti-patterns of either recursive or long-running Lambda functions.
Have you got any advice on how best to solve this problem?
Thanks in advance.

Hi @john-bates ,
Thanks for reaching out! S3 multipart upload would be the way to go. I would recommend letting front end code handling the file chunking and uploading part so end user can see the progress, and long running Lambdas will not be needed. The high level flow would be similar to:

User initiate upload on front end
Front end call backend with file metadata(including size)
Back end generate multipart pre-signed URLs, send back to front end
Front end chunk the file and upload one by one using pre-signed URL
Front end call backend to complete the upload
Back end call S3 to complete multi-part upload

Hope this helps.
Thanks,
Yanyu

Hi @john-bates ,
Thanks for reaching out! S3 multipart upload would be the way to go. I would recommend letting front end code handling the file chunking and uploading part so end user can see the progress, and long running Lambdas will not be needed. The high level flow would be like:

User initiate upload on front end
Front end call backend with file metadata(including size)
Back end generate multipart pre-signed URLs, send back to front end
Front end chunk the file and upload one by one using pre-signed URL
Front end call backend to complete the upload
Back end call S3 to complete multi-part upload

Hope this helps.
Thanks, Yanyu

Hi Yanyu,
Thanks for getting back to me. Has this approach been tested and are there any performance metrics or would it be best that we try a proof of concept?
Thanks,
John

Hi Jon,
We haven't tested this approach yet but at a high level we think this should work. A proof of concept would be needed.
-Tim

Thanks for your help guys.


MOB-M-9: REACT state update on an unmounted component

Performance Summary
When reviewing code in ../covid-shield- mobile/blob/add_device_capabilities/src/screens/home/HomeScreen.tsx#L58, the following suggestion was made
Unmounted component warning that points to a potential memory leak concern.
Analysis of the Issue
There is a warning when app is running in debug mode (at least in Android) that says there is a REACT state update on an unmounted component pointing to the Container component, indicating a memory leak.

Recommendation
Recommend to look into the useEffects() call to provide fix to address the memory leak issue.

I looked into this quite a bit yesterday, and was unable to determine exactly which component was unmounted and trying to update the state.
To replicate on Android:

Launch the app, running in debug mode (ie: not an app from TestFlight or the Play Store)
Navigate through the app to go to a few screens
Press the system back button until the app exits
Press the icon to launch the app again
A warning may appear at the bottom of the screen (YellowBox).

The warning doesn't happen every time, maybe only 50% of the time.

@react-native-community/netinfo is the one causing the leak. Ref https://github.com/CovidShield/mobile/pull/139/files#diff-bb2a692e69dc457e8a5d5757bdaf9a3bR55

Even with the updated netinfo package, this problem still persists. Same steps as above to replicate.

Close as fixed.


add metrics and tracing documentation pages for ruby alpha gem

I signed it

@mwear change ready for review at https://deploy-preview-74--opentelemetry.netlify.com/docs/ruby/tracing/


Nether portal problems

Hello! I am running 1.14.4 server, and for some reasons I can't use nether portals!
Unless I make it using Multiverse-Portals, they don't work. I am talking about default, SP-like obsidian+flint and steel portals.
I linked the worlds, loaded them both, but whenever I go in the portal it just never actually teleports me. Nothing is shown in the console and debug gives no information why it happens. I am OPped and given * using PEX. Both Multiverse Core and Multiverse NetherPortal are latest available versions (4.1.0)
Plugins: https://pastebin.com/jPLhpCyL

Do you have several overworlds & nethers? If so you need MV-NetherPortals. Otherwise, ensure your nether is generated. You may have other plugins denying teleportation there.

Hello! The problem was that I also had plugin WarpPortals! Sorry! Removing WarpPortals helped.


CardClient/ PayPalWebCheckout Analytics Audit

Summary of changes
Change analytic event names for accuracy and consistency with Android
Checklist
~- [ ] Added a changelog entry~
Authors

List GitHub usernames for everyone who contributed to this pull request.

@KunJeongPark @sdhopati

We are going to close this for now to list events we are sending for both iOS and Android and align on which events to send.


Please avoid destroying Snowflake schema if not empty

Terraform CLI and Provider Versions

Terraform: v1.7.4
Provider: v0.88.0

Use Cases or Problem Statement
Currently use Terraform to manage Snowflake schema has high risk.
Proposal
It would be great to support avoiding destroy Snowflake schema if has any tables inside. Thanks!
For instance, AWS Terraform modules will prevent the destruction of a resource if there are any elements nested within it. For example, if there are IAM users within an IAM group, the destruction process will fail with an error:
│ Error: deleting IAM Group (MyIAMGroup): DeleteConflict: Cannot delete entity, must remove users from group first.
│ 	status code: 409, request id: 3f99ee73-64d3-4b26-8d82-affddbb7a0d5

Likewise, attempting to destroy a S3 bucket containing files will also result in failure.
How much impact is this issue causing?
High
Additional Information

Related feature request: https://github.com/Snowflake-Labs/terraform-provider-snowflake/issues/2713

Hey @hongbo-miao. Thanks for the suggestion.
The answer is the same as in https://github.com/Snowflake-Labs/terraform-provider-snowflake/issues/2713.


[SPARK-15317][Core]Don't store accumulators for every task in listeners

What changes were proposed in this pull request?
In general, the Web UI doesn't need to store the Accumulator/AccumulableInfo for every task. It only needs the Accumulator values.
In this PR, it creates new UIData classes to store the necessary fields and make JobProgressListener store only these new classes, so that JobProgressListener won't store Accumulator/AccumulableInfo and the size of JobProgressListener becomes pretty small. I also eliminates AccumulableInfo from SQLListener so that we don't keep any references for those unused AccumulableInfos.
How was this patch tested?
I ran two tests reported in JIRA locally:
The first one is:
val data = spark.range(0, 10000, 1, 10000)
data.cache().count()

The retained size of JobProgressListener decreases from 60.7M to 6.9M.
The second one is:
import org.apache.spark.ml.CC
import org.apache.spark.sql.SQLContext
val sqlContext = SQLContext.getOrCreate(sc)
CC.runTest(sqlContext)

This test won't cause OOM after applying this patch.

Test build #58713 has started for PR 13153 at commit 0f81652.

Test build #58716 has started for PR 13153 at commit 0ef9370.

Test build #58713 has finished for PR 13153 at commit 0f81652.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):
  case class TaskMetricsUIData(
  case class InputMetricsUIData(bytesRead: Long, recordsRead: Long)
  case class OutputMetricsUIData(bytesWritten: Long, recordsWritten: Long)
  case class ShuffleReadMetricsUIData(
  case class ShuffleWriteMetricsUIData(

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/58713/
Test FAILed.

Test build #58718 has started for PR 13153 at commit d98018f.

Test build #58716 has finished for PR 13153 at commit 0ef9370.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/58716/
Test FAILed.

Test build #58718 has finished for PR 13153 at commit d98018f.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/58718/
Test PASSed.

cc @andrewor14 @yhuai @jkbradley

Maybe also put the size comparison in the description?

Great! I'm merging this into master 2.0.


ts: use accounts with types in InstructionCoder

Simplified example:
use anchor_lang::prelude::*;
use std::ops::DerefMut;

pub mod error;

use error::GovernanceResult;

#[program]
pub mod governance {
    use super::*;

    pub fn initialize_governance(
        ctx: Context<InitializeGovernance>,
        governance: Governance,
    ) -> GovernanceResult<()> {
        *ctx.accounts.governance.deref_mut() = governance;
        Ok(())
    }
}

#[account]
pub struct Governance {
    factor: u128,
}

#[derive(Accounts)]
pub struct InitializeGovernance<'info> {
    #[account(init)]
    governance: ProgramAccount<'info, Governance>,

    rent: Sysvar<'info, Rent>,
}

It's will not be possible to call initialize_governance from JS because IDL loading will fail with error: User defined types not provided

Need to run yarn lint:fix

Thanks! I knew that lint script is somewhere :smiley:


Website: cupcake v1.0.1 fixes

We, as the digital design system team, need to understand our user needs and requirements for the cupcake site.  The MVP version of the website was made available on Dec 20, managed under epic 294.
This epic will include links to the group of fixes made after the v1.0.0 release.

Release was finished on Dec 23, 2019.  Closing this epic.