Migrate C to Rust with Box + Fortran 2018

Why Rust

C and C++ is a subtle form of Java. "Write once, debug everywhere" with its compiler and build system.

What worked on this compiler doesn't mean it will work on another compiler.
E.g. 1: Unportable AVX optimization
Introduction
Today, we are going to take this number 0x8F4A2B5C1D3E7A9B and count numbers of 1 in binary.
You can put it in your search engine to convert it.
I got<PHONE_NUMBER>001010001010110101110000011101001111100111101010011011 as the number.
Let's make this number easier to count by splitting it into 8 lines.
10001111 # 5 1s
01001010 # 3
00101011 # 4
01011100 # 4
00011101 # 4
00111110 # 5
01111010 # 4
10011011 # 5

Now add the number together with 5+3+4+4+4+5+4+5. The result is 34. Let's do it in code now.
The code in C
#include <stdint.h>

int32_t count_1s_in_binary(uint64_t x) {
    uint32_t count = 0;
    for (; x; count++) {
        x &= x - 1; // Clear the smallest bit in 'x'
    }
    return count;
}

Now we can check out each compiler's assembly output to see which one has a problem figuring out what we are trying to do.
The compilers
GCC: -O2 -mavx2
count_1s_in_binary:
        xor     eax, eax ; XOR itself to set it to 0, it doesn't do anything??? It doesn't affect the value in rax
        popcnt  rax, rdi ; Count 1s in binary
        ret

Clang: -O2 -mavx2
count_1s_in_binary:                     # @count_1s_in_binary
        popcnt  rax, rdi ; Count 1s in binary
        ret

Icx: -O2 -mavx2
count_1s_in_binary:                     #
        popcnt  rax, rdi ; Count 1s in binary
        ret

MSVC: -O2 -arch:AVX2
x$ = 8
count_1s_in_binary PROC                       ; COMDAT
        xor     eax, eax ; XOR itself(the return register) to set it to 0
        test    rcx, rcx ; If rcx(the input register) is 0
        je      SHORT $LN10@count_1s_i ; If rcx is 0, jump to return.
        npad    9 ; Doesn't do anything
$LL4@count_1s_i:
        blsr    rcx, rcx ; Clear the smallest bit in 'rcx' (binary shift right)
        inc     eax ; Same as eax++
        test    rcx, rcx ; If rcx is 0
        jne     SHORT $LL4@count_1s_i ; Repeat the loop again.
$LN10@count_1s_i:
        ret     0 ; Return eax
count_1s_in_binary ENDP

Only MSVC failed to convert the code into 1 instruction. I think you should only use MSVC when you are only using Windows. The issue with MSVC is that it's not the best at optimizing your code.
The only way to solve this problem is to know your ASM instructions like popcnt, and vmulps and then you can start to use MSVC compiler-specific functions like __popcnt and _mm_mul_ps. But that will make your code messy very fast by adding #ifdef _MSC_VER everywhere in the program if you want to support Linux or MacOS. Here is an example.
#include <stdint.h>

#ifdef _MSC_VER
#include <intrin.h>
#endif

int32_t count_1s_in_binary(uint64_t x) {
    uint32_t count = 0;
#ifdef _MSC_VER
    // Use MSVC-specific intrinsic
    count = __popcnt64(x);
#else
    // Use a generic, portable approach
    for (; x; count++) {
        x &= x - 1; // Clear the smallest bit in 'x'
    }
#endif
    return count;
}

You probably found this less readable than before.
You can learn new ASM instructions by creating math-intensive calculations like the dot product, cross product, and matrix and then putting them in (ifx)Intel Fortran compiler.
Use case for popcnt

Avalanche effect
Uniform distribution of hash(SUHA) I did the code here.

E.g. 2 Default value for uninitialized float
Coming soon...

The lack of auto-free and default initializers makes it a recipe for a debug farm.

Why Fortran?

Faster than C and Rust because of better compilers.
Less error prone than C due to less pointer aliasing issues.

GFortran: -O2 -march=core-avx2
Note: Variables that start with i,j,k,l,m,n will be specified as integers. So you use implicit none to disable this feature.
module VecModule
    implicit none
    type :: Vec3f
        real :: x, y, z
    end type Vec3f
end module VecModule

subroutine cgui_cross(vec, a, b)
    use VecModule
    implicit none
    type(Vec3f), intent(out) :: vec
    type(Vec3f), intent(in) :: a, b

    vec%x = a%y * b%z - a%z * b%y
    vec%y = a%z * b%x - a%x * b%z
    vec%z = a%x * b%y - a%y * b%x
end subroutine cgui_cross

cgui_cross_:
        vmovss  xmm1, DWORD PTR [rsi]
        vmovss  xmm7, DWORD PTR [rsi+8]
        vmovq   xmm2, QWORD PTR [rdx+4]
        vmovss  xmm5, DWORD PTR [rdx]
        vunpcklps       xmm4, xmm7, xmm1
        vmovss  xmm6, DWORD PTR [rdx+8]
        vmovq   xmm0, QWORD PTR [rsi+4]
        vmulps  xmm4, xmm4, xmm2
        vunpcklps       xmm3, xmm6, xmm5
        vfmsub132ps     xmm3, xmm4, xmm0
        vmulss  xmm0, xmm0, xmm5
        vmovlps QWORD PTR [rdi], xmm3
        vfmsub132ss     xmm1, xmm0, xmm2
        vmovss  DWORD PTR [rdi+8], xmm1
        ret

C GCC: -O2 -mavx2
struct Vec3f { float x, y, z; };

void cgui_cross(struct Vec3f* restrict vec, struct Vec3f* a, struct Vec3f* b)
{	vec->x = a->y * b->z
	    - a->z * b->y;
	vec->y = a->z * b->x
	    - a->x * b->z;
	vec->z = a->x * b->y
	    - a->y * b->x; }

cgui_cross:
        vmovss  xmm4, DWORD PTR [rdx]
        vmovss  xmm5, DWORD PTR [rsi]
        vmovss  xmm6, DWORD PTR [rdx+8]
        vmovss  xmm7, DWORD PTR [rsi+8]
        vmovq   xmm1, QWORD PTR [rsi+4]
        vmovq   xmm0, QWORD PTR [rdx+4]
        vunpcklps       xmm2, xmm6, xmm4
        vunpcklps       xmm3, xmm7, xmm5
        vmulps  xmm2, xmm2, xmm1
        vmulps  xmm3, xmm3, xmm0
        vmulss  xmm1, xmm1, xmm4
        vmulss  xmm0, xmm0, xmm5
        vsubps  xmm2, xmm2, xmm3
        vsubss  xmm0, xmm0, xmm1
        vmovlps QWORD PTR [rdi], xmm2
        vmovss  DWORD PTR [rdi+8], xmm0
        ret

Rustc: -C opt-level=2 -C target-feature=+avx2,+fma
pub struct Vec3f { x: f32, y: f32, z: f32 }

pub fn cross(vec: &mut Vec3f, a: &Vec3f, b: &Vec3f) {
    vec.x = a.y * b.z - a.z * b.y;
    vec.y = a.z * b.x - a.x * b.z;
    vec.z = a.x * b.y - a.y * b.x;
}

example::cross:
        vmovss  xmm0, dword ptr [rdx + 4]
        vmovss  xmm1, dword ptr [rdx + 8]
        vmovss  xmm2, dword ptr [rsi + 4]
        vmovss  xmm3, dword ptr [rsi + 8]
        vmulss  xmm4, xmm2, xmm1
        vmulss  xmm5, xmm3, xmm0
        vsubss  xmm4, xmm4, xmm5
        vmovss  dword ptr [rdi], xmm4
        vmovss  xmm4, dword ptr [rdx]
        vmulss  xmm3, xmm3, xmm4
        vmovss  xmm5, dword ptr [rsi]
        vmulss  xmm1, xmm1, xmm5
        vsubss  xmm1, xmm3, xmm1
        vmovss  dword ptr [rdi + 4], xmm1
        vmulss  xmm0, xmm0, xmm5
        vmulss  xmm1, xmm2, xmm4
        vsubss  xmm0, xmm0, xmm1
        vmovss  dword ptr [rdi + 8], xmm0
        ret

GFortran was able to find a shortcut than C and used vfmsub132ps to cut down 2 instructions.
The Latency Credit here
The rules for counting latency are based on this instruction table on Intel Coffee Lake(9th gen Intel CPU). Because that is what I am using now. The registers starting from e(32-bit) and r(64-bit) as in rbx will be considered as 64-bit or r.
add eax, eax
add eax, eax
add eax, eax
add eax, eax # Total latency of 4 cycles for these 4 adds

add eax, eax
add ebx, ebx
add ecx, ecx
add edx, edx # These 4 instructions might all execute, in parallel in a single cycle

Total latency of 4 cycles for these 4 adds, because those are dependent on eax. Left is the output, right are inputs. E.g.

Instruction
output
input

add
eax
eax

Instruction
Operands
μops fused domain
μops unfused domain
μops each port
Latency
Reciprocal throughput
Comments

ADD SUB
r,r/i
1
1
p0156
1
0.25

How do I read it? By dividing 1 by Reciprocal throughput and then you get 4. You can do it 4 times in 1 latency. That means 4 independent chained add or sub will be executed in a single latency.
This might be inaccurate, but I will give it a try.
GFortran: -O2 -march=core-avx2
cgui_cross_:
        vmovss  xmm1, DWORD PTR [rsi] # Latency 2, Reciprocal Throughput 0.5
        vmovss  xmm7, DWORD PTR [rsi+8]
        # 2 latency
        vmovq   xmm2, QWORD PTR [rdx+4] # L 2, T 1
        # 4 latency
        vmovss  xmm5, DWORD PTR [rdx]
        # 6 latency
        vunpcklps       xmm4, xmm7, xmm1 # L 2, T 2
        # 8 latency
        vmovss  xmm6, DWORD PTR [rdx+8]
        # 10 latency
        vmovq   xmm0, QWORD PTR [rsi+4]
        # 12 latency
        vmulps  xmm4, xmm4, xmm2 # L 4, T 1
        # 16 latency
        vunpcklps       xmm3, xmm6, xmm5
        # 18 latency
        vfmsub132ps     xmm3, xmm4, xmm0 # ?, It's mul + sub. So I guess it's L 5.
        # 23 latency
        vmulss  xmm0, xmm0, xmm5 # L 4, T 0.5
        # 27 latency
        vmovlps QWORD PTR [rdi], xmm3 # L 3, T 1
        # 30 latency
        vfmsub132ss     xmm1, xmm0, xmm2 # ?, It's mul + sub. So I guess it's L 5.
        # 35 latency
        vmovss  DWORD PTR [rdi+8], xmm1
        # 37 latency
        ret

There are a lot of different instructions, it will cause stalls. I am not impressed.
ifx: -O2 -march=core-avx2
cgui_cross_:
        vmovss  xmm0, dword ptr [rdx + 4] # Latency 2, Reciprocal Throughput 0.5
        vmovss  xmm1, dword ptr [rdx + 8]
        # 2 latency
        vmovss  xmm2, dword ptr [rsi + 4]
        vmovss  xmm3, dword ptr [rsi + 8]
        # 4 latency
        vmulss  xmm4, xmm0, xmm3 # L 4, T 0.5
        # 8 latency
        vfmsub231ss     xmm4, xmm1, xmm2 # ?, It's mul + sub. So I guess is 5
        # 13 latency
        vmovss  dword ptr [rdi], xmm4
        vmovss  xmm4, dword ptr [rdx]
        # 15 latency
        vmovss  xmm5, dword ptr [rsi]
        # 17 latency
        vmulss  xmm1, xmm5, xmm1
        # 21 latency
        vfmsub231ss     xmm1, xmm4, xmm3
        # 26 latency
        vmovss  dword ptr [rdi + 4], xmm1
        # 28 latency
        vmulss  xmm1, xmm4, xmm2
        # 30 latency
        vfmsub231ss     xmm1, xmm5, xmm0
        # 35 latency
        vmovss  dword ptr [rdi + 8], xmm1
        # 37 latency
        ret

4 consecutive vmovss(128-bit) instructions? This might run 4 instructions parallelly in future CPU. The CPU with AVX-512 support. It's an impressive future-proof code. For nowadays CPU, it's mostly 2.
Both are 37 latency. But in the future, I think IFX will run faster than GFortran on a CPU with AVX-512 support with 33 latency.
How
C functions alternative in Rust

C
Rust
C++

malloc
std::alloc::alloc with Box
new with std::unique_ptr

I have concluded that Box with std::alloc::alloc in Rust is as fast as malloc in C but comes with auto-free.
Look at the total time at the bottom right corner! And the total time.
I remembered that std::unique_ptr with new is slower than raw new in C++. So I am very skeptical about Box.
Using Vec is a very bad idea if you want bare-metal performance.
std::alloc::alloc only
use std::alloc::{alloc, dealloc, Layout};
use std::ptr;

fn main() {
	let num_elements = 1_000_000_0;
	let element_size = std::mem::size_of::<i32>();
	let total_size = num_elements * element_size;

	// Create a Layout that describes the allocation
	let layout = Layout::from_size_align(total_size, std::mem::align_of::<i32>()).unwrap();

	// Allocate memory using alloc
	let ptr = unsafe { alloc(layout) as *mut i32 };

	if ptr.is_null() {
		println!("Memory allocation failed.");
	}
	// Initialize the memory
	for i in 0..num_elements {
		unsafe {
			ptr::write(ptr.offset(i as isize), (num_elements - i) as i32);
		}
	}
	// Print the contents of the array
	for i in 0..10 {
		unsafe {
			println!("Element at index {}: {}", i, *ptr.offset(i as isize));
		}
	}
	// Deallocate memory when done
	unsafe {
		dealloc(ptr as *mut u8, layout);
	}
}

Box with std::alloc::alloc
use std::alloc::{alloc, Layout};

pub fn main() {
	const NUM_ELEMENTS: usize = 1_000_000_0;
	let total_size = NUM_ELEMENTS * std::mem::size_of::<i32>();

	// Create a Layout that describes the allocation
	let layout = Layout::from_size_align(total_size, std::mem::align_of::<i32>()).unwrap();

	// Allocate memory using alloc
	let ptr = unsafe { alloc(layout) as *mut [i32; NUM_ELEMENTS] };

	if ptr.is_null() {
		println!("Memory allocation failed.");
		return;
	}

	// Wrap the allocated memory in a Box
	let mut boxed_data = unsafe { Box::from_raw(ptr) };

	// Initialize the memory
	for i in 0..NUM_ELEMENTS {
		boxed_data[i] = (NUM_ELEMENTS - i) as i32;
	}

	// Print the contents of the array
	for i in 0..10 {
		println!("Element at index {}: {}", i, boxed_data[i]);
	}

	// The Box will automatically deallocate memory when it goes out of scope
}

Vec
pub fn main() {
	let num_elements = 1_000_000_0;

	// Create a Vec containing 1,000,000,0 i32 elements
	let mut vec_data = Vec::with_capacity(num_elements);

	// Initialize the memory
	for i in 0..num_elements {
		vec_data.push((num_elements - i) as i32);
	}

	// Print the contents of the array
	for i in 0..10 {
		println!("Element at index {}: {}", i, vec_data[i]);
	}

	// Memory is automatically deallocated when the Vec goes out of scope
}

I managed to combine Rust + Fortran together in 441b93c.
You need to use nm.exe from GCC to list symbols from Fortran to port it into Rust.

This proposal will be rewritten to sound less aggressive and overly negative.

The gllib code is fully ported to Fortran. 7532137
But the bindings are not fully made.


Remove coverage from Travis CI

Remove coverage, should already be switched over to Github Actions.
FOSSA is still being run in both since Github Actions will not have the secret needed.
Potentially add some additional architectures in Travis CI

Coverage remained the same at 99.133% when pulling f11d60607f953ac77d4101ef950370dbe760bf94 on isaacbrodsky:github-actions-coverage into df151c2d3f621ea25c4ac71a56d2002e435039f9 on uber:master.


Align CI setup to other Roblox OSS repositories

This adds a CI setup that runs the following on every PR:

StyLua
Selene
Unit tests using lua5.1 and lemur
Code coverage of unit tests

Coverage decreased (-0.4%) to 98.755% when pulling 6c29cfc8feb2f65d0d2e20f24ed59a61a6d893cd on ci into 2ea111e5695dddaefcfb5d67bcbb1095fff1b069 on master.


rviz2 MarkerArray Display error

Selecting the MarkerArray Display in the latest rviz2 is showing No transform to fixed frame [base_link]. TF error: [Lookup would require extrapolation into the past. Requested time<PHONE_NUMBER>.89534 but the earliest data is at time<PHONE_NUMBER>.02050, when looking up transform from frame [odom] to frame [base_link]] error in the display window.
The said MarkerArray message contains markers with two different frame_id : 1) base_link and 2)odom.
All the markers with odom frame_id are not displayed in the rviz2 window.

A update on this issue : the exception seems to come from the function  TFFrameTransformer::transform(const rviz_common::transformation::PoseStamped & pose_in, const std::string & target_frame)    in the file. (https://github.com/ros2/rviz/blob/ros2/rviz_default_plugins/src/rviz_default_plugins/transformation/tf_frame_transformer.cpp)
It seems that using ros2 run tf2_ros static_transform_publisher 0 0 0 0 0 0 map odom  is the only solution to the issue. I don't understand why rviz2 needs to listen to /tf_static topic.  published by the static_transform_publisher,  to update the TF tree.

Yes, definitely. The error message is a tf error as the message tells you, hence must come from the lookupTransform call in the display, which calls transform. In other words, it must come from within TFFrameTransformer.
Static transforms are no problem, because their transform is available at any time as the name suggests.
This is probably yet another issue that will be solved once message filters are available - or at least the real problem should become much more apparent!

Thanks at follow up @Martin-Idel-SI . I thought it may be related to tf2 message_filters, but needed some confirmation.

@sagniknitr if the error still persists can you please tell how to reproduce the same. I have an implementation of rviz tf message filters ready PR. It would be helpful in confirming if that actually serves the purpose.


ballerina -h <cmd> does not output the help text for the

Description:
$title.
$ ballerina -h run
ballerina: no ballerina program given.

USAGE:
    ballerina run {<bal-file> | <module-name> | <executable-jar>}

For more information try --help
Unmatched argument at index 1: 'run'

Due to this, we had to introduce multiple entries in the command synopsis with https://github.com/ballerina-platform/ballerina-distribution/pull/329/files#diff-f34b63cc0bd9c5bda787502f8c13e4d8R5-R6 and https://github.com/ballerina-platform/ballerina-lang/pull/20422.
Once this is fixed, we can clean up the synopsis for the ballerina and ballerina dist commands.
Affected Versions:
1.1.0-beta2

This should probably be ballerina --help <command>.


Iris Docs: Build has much less output now

When building the documentation (uses sphinx-build) the typical output includes showing the files that are being read/written and a summary at the end.
Currently on master this output is now not being displayed.  Some travis logs for reference:

Expected output.

https://travis-ci.org/github/SciTools/iris/jobs/717339844#L1365.  Note the [???%] progress update on the generating gallery, reading sources, writing output etc.
https://travis-ci.org/github/SciTools/iris/jobs/717339844#L1942.  Note the summary showing copying files and that the build succeeded

Current output from master as of today

https://travis-ci.org/github/SciTools/iris/jobs/718253890#L1381, has no [???%] progress updates and also part of the summary is missing
https://travis-ci.org/github/SciTools/iris/jobs/718253890#L1702.  Note the summary is missing

The change in behaviour seems to be introduced via commit https://github.com/SciTools/iris/commit/556e71e01bbc4efb3f24a25705f6cfcb4e3c3c6f
I have built the docs (make html) on master locally and have reproduced this.  Additionally it seems that if there are .rst syntax warnings it is no longer displayed.

ping @bjlittle

Suspect the new logging file https://github.com/SciTools/iris/blob/master/lib/iris/etc/logging.yaml has changed the behaviour added via 556e71e01bbc4efb3f24a25705f6cfcb4e3c3c6f

I have successful got the output reinstated by explicitly adding a reference to the sphinx in the https://github.com/SciTools/iris/blob/master/lib/iris/etc/logging.yaml file.  The output looks different as it it using a formatter defined in this yaml file and not the default formatter for sphinx (I assume).
make html in src...
make[1]: Entering directory `/net/home/h06/itkt/projects/iris/docs/iris/src'
sphinx-build -b html -d _build/doctrees   . _build/html
Running Sphinx v3.2.0
[conf.py] Iris Version = 3.0
[conf.py] Iris Release = 3.0.dev0
17-08-2020 16:46:11 sphinx.sphinx.util INFO - making output directory...
17-08-2020 16:46:11 sphinx.sphinx.util INFO - done
17-08-2020 16:46:11 sphinx.sphinx.ext.autosummary.generate INFO - [autosummary] generating autosummary for: copyright.rst, developers_guide/code_format.rst, developers_guide/contributing_documentation.rst, developers_guide/deprecations.rst, developers_guide/documenting/docstrings.rst, developers_guide/documenting/index.rst, developers_guide/documenting/rest_guide.rst, developers_guide/documenting/whats_new_contributions.rst, developers_guide/gitwash/configure_git.rst, developers_guide/gitwash/development_workflow.rst, ..., whatsnew/1.7.rst, whatsnew/1.8.rst, whatsnew/1.9.rst, whatsnew/2.0.rst, whatsnew/2.1.rst, whatsnew/2.2.rst, whatsnew/2.3.rst, whatsnew/2.4.rst, whatsnew/index.rst, whatsnew/latest.rst
17-08-2020 16:46:11 sphinx.sphinx.ext.intersphinx INFO - loading intersphinx inventory from http://scitools.org.uk/cartopy/docs/latest/objects.inv...
17-08-2020 16:46:11 sphinx.sphinx.ext.intersphinx INFO - loading intersphinx inventory from http://matplotlib.org/objects.inv...
17-08-2020 16:46:11 sphinx.sphinx.ext.intersphinx INFO - loading intersphinx inventory from http://docs.scipy.org/doc/numpy/objects.inv...
17-08-2020 16:46:11 sphinx.sphinx.ext.intersphinx INFO - loading intersphinx inventory from http://docs.python.org/2.7/objects.inv...
17-08-2020 16:46:11 sphinx.sphinx.ext.intersphinx INFO - loading intersphinx inventory from http://docs.scipy.org/doc/scipy/reference/objects.inv...
17-08-2020 16:46:12 sphinx.sphinx.ext.intersphinx INFO - intersphinx inventory has moved: http://scitools.org.uk/cartopy/docs/latest/objects.inv -> https://scitools.org.uk/cartopy/docs/latest/objects.inv
17-08-2020 16:46:12 sphinx.sphinx.ext.intersphinx INFO - intersphinx inventory has moved: http://docs.python.org/2.7/objects.inv -> https://docs.python.org/2.7/objects.inv
17-08-2020 16:46:12 sphinx.sphinx.ext.intersphinx INFO - intersphinx inventory has moved: http://matplotlib.org/objects.inv -> https://matplotlib.org/objects.inv
17-08-2020 16:46:12 sphinx.sphinx.ext.intersphinx INFO - intersphinx inventory has moved: http://docs.scipy.org/doc/scipy/reference/objects.inv -> https://docs.scipy.org/doc/scipy/reference/objects.inv
17-08-2020 16:46:12 sphinx.sphinx.ext.intersphinx INFO - intersphinx inventory has moved: http://docs.scipy.org/doc/numpy/objects.inv -> https://numpy.org/doc/stable/objects.inv
17-08-2020 16:46:12 sphinx.sphinx-gallery INFO - generating gallery...
17-08-2020 16:46:12 sphinx.sphinx.util INFO - generating gallery for generated/gallery/general... [  7%] plot_polar_stereo.py
17-08-2020 16:46:13 sphinx.sphinx.util INFO - generating gallery for generated/gallery/general... [ 15%] plot_global_map.py

Sphinx logging: https://www.sphinx-doc.org/en/master/_modules/sphinx/util/logging.html?highlight=logger#


[Chore] Update release-nightly workflow and TypeScript version\n\n- Update the release-nightly workflow to include 'git checkout main' before creating @nightly release.\n- Upgrade TypeScript dependencies from version 5.4.5 to 5.5.2 across various packages.

#3515  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @jnsdls and the rest of your teammates on  Graphite


[closes #1775] force creation of threads in the service creator's thread group

this leaves me wondering if we shouldn't create a thread group for our thread pools though.


[rcore] Incorrect monitor resolution

Issue description
The monitor of my laptop has a resolution of 2560x1600. I have configured scaling to 1.25x through Xfce, which sets virtual resolution to 3328x2080 as can be seen in the output of the xrandr command. However, when I call GetMonitorWidth()/GetMonitorHeight(),  I get the physical resolution of the monitor (2560x1600), not the virtual one. Also, GetWindowScaleDPI() returns 1.
SDL3 returns the virtual resolution on X11, so I don't think it's a misconfiguration on my part.
Environment
Hardware: Ryzen 7 8845HS laptop with Radeon 780M integrated graphics, 2560x1600 pixels monitor
Software: Linux 6.11.9, XFCE 4.18, Xorg-server 21.1.4
Issue Screenshot

Code Example
InitWindow(WIDTH, HEIGHT, "Test"); int w = GetMonitorWidth(0); int scale = GetWindowScaleDPI();

Those are the correct values. GetMonitorWidth(), GetMonitorHeight() are returning the exact sizes provided by GLFW (ref, ref) or SDL (ref, ref), as they should.
If you want to factor in arbitrary user defined/applied scales you'll have to multiply it on client-side. GLFW has it (ref), SDL3 has it (ref), SDL2 doesn't (ref). But nobody implemented a GetMonitorScale() yet for raylib, although it probably should be added at some point.

Those are the correct values. GetMonitorWidth(), GetMonitorHeight() are returning the exact sizes provided by GLFW (ref, ref) or SDL (ref, ref), as they should.
If you want to factor in arbitrary user defined/applied scales you'll have to multiply it on client-side. GLFW has it (ref), SDL3 has it (ref), SDL2 doesn't (ref). ~But nobody implemented a GetMonitorScale() yet for raylib, although it probably should be added at some point.~ (see #4525)

Thank you for your response. I just merged your pull request locally and I get 1.000000 from GetMonitorScale(), exactly the same value as GetWindowScaleDPI().
The thing is SDL3 returns the virtual size, which is the size I have to work with:
SDL_DisplayID display = SDL_GetPrimaryDisplay();
const SDL_DisplayMode *displayMode = SDL_GetCurrentDisplayMode(display);
SDL_Log("Display size: %dx%d\n", displayMode->w, displayMode->h);

Output: Display size: 3328x2080

I didn't add implementation for SDL, just GLFW and web.
No idea why SDL3 is returning the virtual size there.

I didn't add implementation for SDL, just GLFW and web.
Yes, I know. I used the GLFW backend. The SDL3 test program is not using raylib, it is using SDL3 directly.

No idea why SDL3 is returning the virtual size there.

I don't know either, I just know that it's the size I have to work with under X11. I think Wayland is different...

Tested on Linux Mint 22 MATE Edition with X11 and everything is working correctly here.

Logs

$ lsb_release -a
No LSB modules are available.
Distributor ID: Linuxmint
Description:    Linux Mint 22
Release:        22
Codename:       wilma

$ xdpyinfo | grep version
version number:    11.0
X.Org version: 21.1.11

$ apt-cache policy mate-desktop
mate-desktop:
  Installed: 1.26.2-1.1build3
  Candidate: 1.26.2-1.1build3
  Version table:
 *** 1.26.2-1.1build3 500
        500 http://archive.ubuntu.com/ubuntu noble/universe amd64 Packages
        100 /var/lib/dpkg/status

Out of curiosity, which distro are you using? Maybe the issue could be related to the way XFCE is setting that scale.

Tested on Linux Mint 22 MATE Edition with X11 and everything is working correctly here.
Logs
$ lsb_release -a
No LSB modules are available.
Distributor ID: Linuxmint
Description:    Linux Mint 22
Release:        22
Codename:       wilma

$ xdpyinfo | grep version
version number:    11.0
X.Org version: 21.1.11

$ apt-cache policy mate-desktop
mate-desktop:
  Installed: 1.26.2-1.1build3
  Candidate: 1.26.2-1.1build3
  Version table:
 *** 1.26.2-1.1build3 500
        500 http://archive.ubuntu.com/ubuntu noble/universe amd64 Packages
        100 /var/lib/dpkg/status

Out of curiosity, which distro are you using? Maybe the issue could be related to the way XFCE is setting that scale.

Interesting, I just installed Linux Mint 22 and tried different scaling settings. When I use an integer scaling (200%), the display resolution shown by xrandr matches the physical display resolution (2560x1600) and GetWindowScaleDPI() returns 2, which is correct. But when I use fractional scaling (say 150%), the resolution shown by xrandr is scaled accordingly (so it does not match the physical resolution of the monitor anymore) and GetWindowScaleDPI() still shows 2.
SDL3 works as expected in this case, because it seems fractional scaling is accomplished by altering the physical resolution of the monitor (at least on X11). This is why you have to work with a "virtual" resolution. On Windows you can use fractional scaling but still work with the physical resolution of the monitor.

I have been doing some more testing... I have recompiled raylib with the new RGFW backend and now it behaves likes SDL3. Now GetMonitorWidth()/GetMonitorHeight() return the "virtual" resolution of the monitor (3328x2080), the same resolution shown by xrandr.

Hi there again!
I finally found the issue. It is an upstream issue of GLFW -> https://github.com/glfw/glfw/issues/1961
As I said, both the SDL3 and RGFW backends return the proper values. It's a shame I can't use either of those because RGFW seems to be terribly broken and the framerate with SDL3 is not stable (I don't know why, but it is something that also happens using SDL3 directly).

@xroberx

RGFW seems to be terribly broken
What specifically is broken?

HOWEVER, now I cannot use SetWindowSize() after InitWindow(), it is just ignored.
That's strange, I'll look into this ASAP

@xroberx

RGFW seems to be terribly broken

What specifically is broken?

Apart from SetWindowSize() not working, try the following code:
#include <raylib.h>

int main() {
    InitWindow(800, 600, "TEST");
    SetTargetFPS(60);

    while (!WindowShouldClose()) {
        BeginDrawing();
        ClearBackground(BLACK);
        DrawRectangleLines(0, 0, 800, 600, WHITE);
        EndDrawing();
    }
    CloseWindow();

    return 0;
}

This is what I get using the RGFW backend:

This is the LOG output using the RGFW backend:

And this is the LOG using the default GLFW backend, which works fine:

I was curious about this example and discovered a tangential issue.
I used the @xroberx code exactly and compiled it (using my VCrayApp script) using Visual Studio Build Tools and Visual Studio 2022 Developer Command Prompt v17.11.5 (latest) for x64.  The raylib/src/ used to build a cache of *.obj files is the current main 5.6-dev repo.
Here is the closer-to-expected result on my Windows 10 desktop.

The screen capture was with HyperSnap Version 9.5.2 (64-bit).  I used the capture mode for the complete current Window (having the cursor, which is also captured).
An interesting feature of the captured PNG image is that it is 802 pixels wide and 639 pixels deep.  And that includes the GUI title bar and frame of the application area:  a (single pixel?) frame of the same default color as the title bar.
We can see that the drawn rectangle overlays the top and right edge of the frame, but no rectangle appears at (or atop) the left and bottom frame lines.  My speculation is that those parts of the rectangle are outside the frame and do not appear.
Here's an example used to confirm that a cache of raylib 5.6-dev code compiles correctly and is demonstrated by a simple program using an InitWindow(800,450).  The displayed and captured application window is 802 wide by 489 pixels high.

The @xroberx problem is not confirmed in this case.  But we now have something concerning the precision of framing and how there may be rounding issues in the box drawing at the edge  of the displayed application area.

@xroberx Do you mind opening the RGFW issue separately so I can look into it?

@xroberx @raysan5 @ColleagueRiley

I was curious about this example and discovered a tangential issue.
[ ... ]
The @xroberx problem is not confirmed in this case. But we now have something concerning the precision of framing and how there may be rounding issues in the box drawing at the edge of the displayed application area.

I have dug around and found the defect to be a problem in DrawRectangleLines().  There will be a separate issue on that.  The crux of the defect is that, for
   DrawRectangleLines(0, 0, w, h)

The coordinates of the initial corner point should be (0, 0) and the far corner from there should be at coordinates (w-1, h-1) at default settings.  DrawRectangleLines makes a mess of that.

The coordinates of the initial corner point should be (0, 0) and the far corner fro

@orcmid Yes, but, strangely, the RGFW one is given a viewport but the GLFW one isn't. Is that the proper behavior?

@ColleagueRiley

The coordinates of the initial corner point should be (0, 0) and the far corner fro

@orcmid Yes, but, strangely, the RGFW one is given a viewport but the GLFW one isn't. Is that the proper behavior?

I don't know enough to go that deep.  I am relying entirely on the definition of DrawRectangleLines() in rshapes.c where rlGetmatrixModelview() is relied upon, along with a sketchy zoomFactor.  (I assume mat.m0 is likely 1.0 in a default setup as used by @xroberx in his demonstration.  If there's something uninitialized or set to something other than the Matrix identity values, that might be a clue for the @xroberx problem.

@orcmid I did a quick test and I think there might be a problem with SetupFramebuffer for the RGFW platform. Maybe it's just not something that platform needs (RGFW can do scaling internally properly)

@orcmid I did a quick test and I think there might be a problem with SetupFramebuffer for the RGFW platform. Maybe it's just not something that platform needs (RGFW can do scaling internally properly)

It seems to me that the definition of rlGetMatrixModelview() in rlgl.h and used by rshapes.c is clear enough, unless there is a setup error for RLGL.State.modelview.
I find it weird that 'DrawRectangleLines

@xroberx The X11 window when refusing to resize SetWindowSize is called because when the RGFW is set not to allow the user to resize the window, X11 also doesn't allow the window's size to change.
This has been fixed in this PR: https://github.com/raysan5/raylib/pull/4480


add password masking when cf login

Command
cf login
What occurred
Email><EMAIL_ADDRESS>Password>
What you expected to occur
Email><EMAIL_ADDRESS>Password> ******

Hi @boyang9527
I like that suggestion. Let me check with my team if it's possible with the library we use.
Regards,
Dies Koper
CF CLI PM

thanks @dkoper

Hi @boyang9527
We decided against doing this for security reasons.
I noticed dialog has an --insecure option for this:
--insecure
    Makes the password widget friendlier but less secure, by echoing asterisks for each character.

I agree at times it's useful to get keypress feedback, but prefer not to add an insecure feature to cf login.
Regards,
Dies Koper
CF CLI PM

@dkoper  that is fine, thanks for your update.


Fix autodeploy to staging

Thanks for creating an issue! Please fill out this form so we can be sure to have all the information we need, and to minimize back and forth.

What are we trying to do?

Keep our staging env up to date with main

What feature or behavior is this required for?
Modern CI/CD!

How could we solve this issue? (Not knowing is okay!)
Might be related to Heroku's security wipe?

Anything else?
Recent Action run

Fixed! https://github.com/DARIAEngineering/dcaf_case_management/runs/6357608942?check_suite_focus=true


Extension conflict check detects more combinations

This will also detect conflicts with kalitaalexey.vscode-rust and work correctly after RA is integrated with rust-lang.rust extension.

bors d+ with grammar nit

bors r+


fix legacy build issue - Pch header location

fixes #2318

Looks good

@tcare Thanks for the review


replay the action sequence from tw in iThor

Hi everyone,
When I use the same task to execute in tw and iThor, I get different feedback. How should I align the scenes of iThor and tw?
Specifically, how can I re-execute the action sequence obtained by interacting with tw in iThor? As you can see in the figure below, when the task is initialized, the environment information (for example, Cabinet 6 does not exist in iThor) output by the system is different.
Any advice or shared experiences in dealing with similar issue would be greatly appreciated.

hi， have you solved this problem

Hi, thanks for reporting. I've looked a little bit into this.
The underlying state representation for the text-only version of ALFRED differs from the visual+text version. The main difference is how receptable (e.g. cabinet, fridge, table, etc) are being split. For instance, in the text-only, the cabinet is split in 6 whereas in the visual one, it is only split in 4.
With that being said, if you want to have both modalities, I'd suggest you sticking with only the visual+text version. ALFWorld was never intended to be used as obtaining a trajectory in the text-only version and deploying the solution in the visual+text one. The goal was to have a more efficient way of train agents and deploying those agents (i.e., the policies) to the visual+text environment.
I hope this helps better understanding to what's happening here.


Querying relations through GraphQL

I noticed that GetManyInput does not have a relations key, and it doesn't seem like there is an automatic way (or manual way) to specify which relations should load, so they are being returned as null when requested through queries. Is this something that is to be implemented?

I'm assuming something needs to be updated about getConditionFromGqlQuery to have relations properly returned.

Hello @hcharley , first of all, thank you for your interest in my repository.
As you mentioned, in my repository, to solve the GraphQL n+1 problem, It has been designed to extract TypeORM's Select and Relation statements from a GraphQL query.
Previously, the system was designed to manually specify relations, but it has been updated to automate this process through a new logic.
You can see the related PR here
And as you mentioned, the related file can be found here
For instance, if a User and Lecture are in a 1:n relationship and the query includes Lecture, then Lecture will be joined from the db, and if not, it won't be joined.
If you understand this situation but still find something wrong with the operation, please  share the relavant code.
it would be very helpful, though I know it might be a hassle.
Thank you.


QuasirandomGenerator SYCL Migration

Description
Migrating and optimizing the  QuasirandomGenerator Application from CUDA to SYCL.
Checklist
Administrative

[X] Review sample design with the appropriate Domain Expert: <Choudary, Chekuri; Krishnappa, Rakshith>
[ ] If you have any new dependencies/binaries, inform the oneAPI Code Samples Project Manager

Code Development

[X] Implement coding guidelines and ensure code quality. see wiki for details
[X] Adhere to readme template
[X] Enforce format via clang-format config file
[X] Adhere to sample.json specification. https://github.com/oneapi-src/oneAPI-samples/wiki/sample-json-specification
[X] Ensure/create CI test configurations for sample (ciTests field) https://github.com/oneapi-src/oneAPI-samples/wiki/sample-json-ci-test-object
[X] Run jsonlint on sample.json to verify json syntax. www.jsonlint.com

Security and Legal

[ ] OSPDT Approval (see Project Manager for assistance)
[X] Compile using the following compiler flags and fix any warnings, the falgs are: "/Wall -Wformat-security -Werror=format-security"
[ ] Bandit Scans (Python only)
[ ] Virus scan

Review

[X] Review DPC++ code with Paul Peterseon. (GitHub User: pmpeter1)
[X] Review readme with Tom Lenth(@tomlenth) and/or Project Manager
[X] Tested using Dev Cloud when applicable

@ManjulaChalla  Can you please resubmit to the development branch (and not the master branch)? If you need to open a new PR, please close this one.

@ManjulaChalla Can you please resubmit to the development branch (and not the master branch)? If you need to open a new PR, please close this one.

@jimmytwei I have edited and resubmitted to the development branch without creating any new PR. Let me know if it works.

Rising a new PR to development branch


[SMALLFIX] Javadoc fix up in HeartbeatScheduler

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins/job/Tachyon-Pull-Request-Builder/6521/
Test PASSed.

LGTM


Can't run autoRIFT on Sentinel-1 images

I am having problems running testautoRIFT_ISCE.py using the processed Sentinel-1 images using ISCE. I've processed the images using ISCE until the mergebursts step. Then, I've run the testGeogrid.py to generate a window location which ran successfully. However, when I ran the testautoRIFT_ISCE.py an error pops up.
Below is the command I've run on the terminal using the reference and secondary slc.full files and the accompanying error message.
(isce2expe) abscissa@ABSCISSA:/mnt/f/2020_Masbate/Sentinel-1/DInSAR/autoRIFT$ python testautoRIFT_ISCE.py -m ../20200814_20200821_des_neworb/merged/reference.slc.full -s ../20200814_20200821_des_neworb/merged/secondary.slc.full -g window_location.tif
This is the Open Source version of ISCE.
Some of the workflows depend on a separate licensed package.
To obtain the licensed package, please make a request for ISCE
through the website: https://download.jpl.nasa.gov/ops/request/index.cfm.
Alternatively, if you are a member, or can become a member of WinSAR
you may be able to obtain access to a version of the licensed sofware at
https://winsar.unavco.org/software/isce
ERROR 4: ../20200814_20200821_des_neworb/merged/reference.slc.full: No such file or directory
Traceback (most recent call last):
  File "/home/abscissa/miniconda3/envs/isce2expe/lib/python3.8/site-packages/isce/components/isceobj/Util/ImageUtil/ImageLib.py", line 465, in mmapFromISCE
    img, dataName, metaName = loadImage(fname)
  File "/home/abscissa/miniconda3/envs/isce2expe/lib/python3.8/site-packages/isce/components/isceobj/Util/ImageUtil/ImageLib.py", line 416, in loadImage
    prop,fac,misc = parser.parse(metaName)
  File "/home/abscissa/miniconda3/envs/isce2expe/lib/python3.8/site-packages/isce/components/iscesys/Parsers/XmlParser.py", line 41, in parse
    root = ET.parse(filename)
  File "/home/abscissa/miniconda3/envs/isce2expe/lib/python3.8/xml/etree/ElementTree.py", line 1202, in parse
    tree.parse(source, parser)
  File "/home/abscissa/miniconda3/envs/isce2expe/lib/python3.8/xml/etree/ElementTree.py", line 584, in parse
    source = open(source, "rb")
FileNotFoundError: [Errno 2] No such file or directory: '../20200814_20200821_des_neworb/merged/reference.slc.full.xml'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/abscissa/miniconda3/envs/isce2expe/lib/python3.8/site-packages/isce/components/isceobj/Util/ImageUtil/ImageLib.py", line 469, in mmapFromISCE
    img = loadGDALImage(fname)
  File "/home/abscissa/miniconda3/envs/isce2expe/lib/python3.8/site-packages/isce/components/isceobj/Util/ImageUtil/ImageLib.py", line 444, in loadGDALImage
    drv = ds.GetDriver()
AttributeError: 'NoneType' object has no attribute 'GetDriver'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "testautoRIFT_ISCE.py", line 957, in <module>
    main()
  File "testautoRIFT_ISCE.py", line 387, in main
    generateAutoriftProduct(indir_m=inps.indir_m, indir_s=inps.indir_s, grid_location=inps.grid_location,
  File "testautoRIFT_ISCE.py", line 414, in generateAutoriftProduct
    data_m = loadProduct(indir_m)
  File "testautoRIFT_ISCE.py", line 98, in loadProduct
    IMG = IML.mmapFromISCE(filename, logging)
  File "/home/abscissa/miniconda3/envs/isce2expe/lib/python3.8/site-packages/isce/components/isceobj/Util/ImageUtil/ImageLib.py", line 473, in mmapFromISCE
    raise Exception('Input file: {0} should either be an ISCE image / GDAL image. Appears to be neither'.format(fname))
Exception: Input file: ../20200814_20200821_des_neworb/merged/reference.slc.full should either be an ISCE image / GDAL image. Appears to be neither

Though, I noticed that autoRIFT is reading the xml files instead since ISCE didn't produce the .slc.full files.
I've also ran the VRT files of the slc.full files and it produced the same error. Below is the output from the terminal.
(isce2expe) abscissa@ABSCISSA:/mnt/f/2020_Masbate/Sentinel-1/DInSAR/autoRIFT$ python testautoRIFT_ISCE.py -m ../20200814_20200821_des_neworb/merged/reference.slc.full.vrt -s ../20200814_20200821_des_neworb/merged/secondary.slc.full.vrt -g window_location.tif
This is the Open Source version of ISCE.
Some of the workflows depend on a separate licensed package.
To obtain the licensed package, please make a request for ISCE
through the website: https://download.jpl.nasa.gov/ops/request/index.cfm.
Alternatively, if you are a member, or can become a member of WinSAR
you may be able to obtain access to a version of the licensed sofware at
https://winsar.unavco.org/software/isce
ERROR 4: ../20200814_20200821_des_neworb/merged/reference.slc.full.vrt: No such file or directory
Traceback (most recent call last):
  File "/home/abscissa/miniconda3/envs/isce2expe/lib/python3.8/site-packages/isce/components/isceobj/Util/ImageUtil/ImageLib.py", line 465, in mmapFromISCE
    img, dataName, metaName = loadImage(fname)
  File "/home/abscissa/miniconda3/envs/isce2expe/lib/python3.8/site-packages/isce/components/isceobj/Util/ImageUtil/ImageLib.py", line 416, in loadImage
    prop,fac,misc = parser.parse(metaName)
  File "/home/abscissa/miniconda3/envs/isce2expe/lib/python3.8/site-packages/isce/components/iscesys/Parsers/XmlParser.py", line 41, in parse
    root = ET.parse(filename)
  File "/home/abscissa/miniconda3/envs/isce2expe/lib/python3.8/xml/etree/ElementTree.py", line 1202, in parse
    tree.parse(source, parser)
  File "/home/abscissa/miniconda3/envs/isce2expe/lib/python3.8/xml/etree/ElementTree.py", line 584, in parse
    source = open(source, "rb")
FileNotFoundError: [Errno 2] No such file or directory: '../20200814_20200821_des_neworb/merged/reference.slc.full.vrt.xml'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/abscissa/miniconda3/envs/isce2expe/lib/python3.8/site-packages/isce/components/isceobj/Util/ImageUtil/ImageLib.py", line 469, in mmapFromISCE
    img = loadGDALImage(fname)
  File "/home/abscissa/miniconda3/envs/isce2expe/lib/python3.8/site-packages/isce/components/isceobj/Util/ImageUtil/ImageLib.py", line 444, in loadGDALImage
    drv = ds.GetDriver()
AttributeError: 'NoneType' object has no attribute 'GetDriver'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "testautoRIFT_ISCE.py", line 957, in <module>
    main()
  File "testautoRIFT_ISCE.py", line 387, in main
    generateAutoriftProduct(indir_m=inps.indir_m, indir_s=inps.indir_s, grid_location=inps.grid_location,
  File "testautoRIFT_ISCE.py", line 414, in generateAutoriftProduct
    data_m = loadProduct(indir_m)
  File "testautoRIFT_ISCE.py", line 98, in loadProduct
    IMG = IML.mmapFromISCE(filename, logging)
  File "/home/abscissa/miniconda3/envs/isce2expe/lib/python3.8/site-packages/isce/components/isceobj/Util/ImageUtil/ImageLib.py", line 473, in mmapFromISCE
    raise Exception('Input file: {0} should either be an ISCE image / GDAL image. Appears to be neither'.format(fname))
Exception: Input file: ../20200814_20200821_des_neworb/merged/reference.slc.full.vrt should either be an ISCE image / GDAL image. Appears to be neither

If ISCE doesn't produce those files right away, what are the methods available to produce .slc.full files so I would be able to process them in autoRIFT?

I've finally solved it. I've run the processing up until the dense offsets. Afterwards, the reference and secondary.slc.full files appeared on the merged folder.
My apologies for the noise.

hi, @bjmarfito , I have the same question like you , i do not know how the isce produce the .slc.full file, can you show me the comand line of how you get the .slc.full file? thank you very much.

@jhkennedy have we seen this issue on our end?

@guangbaoshen as @bjmarfito mentions, you'll need to run ISCE up to the merge bursts steps. On the command line, that'll look like:
${ISCE_HOME}/applications/topsApp.py topsApp.xml --end=mergebursts

You'll have to make the topsApp.xml file for ISCE -- I've made a python helper function to do that which might be useful to you
def format_tops_xml(reference, secondary, polarization, dem, orbits, xml_file='topsApp.xml'):
    xml_template = f"""    <?xml version="1.0" encoding="UTF-8"?>
    <topsApp>
        <component name="topsinsar">
            <component name="reference">
                <property name="orbit directory">{orbits}</property>
                <property name="auxiliary data directory">{orbits}</property>
                <property name="output directory">reference</property>
                <property name="safe">['{reference}.zip']</property>
                <property name="polarization">{polarization}</property>
            </component>
            <component name="secondary">
                <property name="orbit directory">{orbits}</property>
                <property name="auxiliary data directory">{orbits}</property>
                <property name="output directory">secondary</property>
                <property name="safe">['{secondary}.zip']</property>
                <property name="polarization">{polarization}</property>
            </component>
            <property name="demfilename">{dem}</property>
            <property name="do interferogram">False</property>
            <property name="do dense offsets">True</property>
            <property name="do ESD">False</property>
            <property name="do unwrap">False</property>
            <property name="do unwrap 2 stage">False</property>
            <property name="ampcor skip width">32</property>
            <property name="ampcor skip height">32</property>
            <property name="ampcor search window width">51</property>
            <property name="ampcor search window height">51</property>
            <property name="ampcor window width">32</property>
            <property name="ampcor window height">32</property>
        </component>
    </topsApp>
    """

    with open(xml_file, 'w') as f:
        f.write(textwrap.dedent(xml_template))

I got it, thank you very much! @jhkennedy


Can't deploy

8:23:33 PM: Installing npm packages using pnpm version 8.14.1
8:23:33 PM:  ERR_PNPM_OUTDATED_LOCKFILE  Cannot install with "frozen-lockfile" because pnpm-lock.yaml is not up to date with package.json
8:23:33 PM: Note that in CI environments this setting is true by default. If you still need to run install in such cases, use "pnpm install --no-frozen-lockfile"
8:23:33 PM:     Failure reason:
8:23:33 PM:     specifiers in the lockfile ({"@builder.io/partytown":"^0.7.6","@unocss/extractor-svelte":"^0.53.6","sharp":"^0.30.7","@iconify-json/heroicons-outline":"^1.1.6","@iconify-json/heroicons-solid":"^1.1.7","@iconify-json/simple-icons":"^1.1.61","@sveltejs/adapter-node":"1.3.1","@sveltejs/adapter-static":"2.0.2","@sveltejs/adapter-vercel":"3.0.2","@sveltejs/kit":"^1.22.3","@tailwindcss/typography":"^0.5.9","@types/unist":"^2.0.7","@typescript-eslint/eslint-plugin":"^5.62.0","@typescript-eslint/parser":"^5.62.0","@vite-pwa/sveltekit":"^0.1.3","autoprefixer":"^10.4.14","chalk":"^5.3.0","chokidar":"^3.5.3","cross-env":"^7.0.3","cssnano":"^5.1.15","daisyui":"^2.52.0","eslint":"^8.45.0","eslint-config-prettier":"^8.8.0","eslint-plugin-svelte3":"^4.0.0","fenceparser":"^2.2.0","fff-flavored-frontmatter":"~0.4.2","github-slugger":"^2.0.0","mdast-util-to-string":"^3.2.0","mdsvex":"^0.11.0","npm-run-all":"^4.1.5","postcss":"^8.4.27","postcss-preset-env":"^7.8.3","prettier":"^2.8.8","prettier-plugin-svelte":"^2.10.1","rehype-autolink-headings":"^6.1.1","rehype-external-links":"^1.0.1","rehype-slug":"^5.1.0","remark":"^14.0.3","remark-fff":"~0.4.2","remark-footnotes":"~2.0.0","rollup-plugin-visualizer":"^5.9.2","shiki-twoslash":"^3.1.2","svelte":"4.1.1","svelte-bricks":"^0.1.7","svelte-check":"^3.4.6","svelte-preprocess":"^5.0.4","tailwindcss":"^3.3.3","tslib":"^2.6.0","typescript":"^5.1.6","unist-util-visit":"^5.0.0","unocss":"^0.53.6","vite":"^4.4.6","vite-plugin-pwa":"^0.16.4","workbox-window":"^7.0.0"}) don"t match specs in package.json ({"@iconify-json/heroicons-outline":"^1.1.4","@iconify-json/heroicons-solid":"^1.1.5","@sveltejs/adapter-auto":"next","@sveltejs/adapter-node":"next","@sveltejs/adapter-static":"next","@sveltejs/kit":"1.0.0-next.456","@tailwindcss/typography":"^0.5.4","@types/node":"^18.7.14","@types/unist":"^2.0.6","@typescript-eslint/eslint-plugin":"^5.36.1","@typescript-eslint/parser":"^5.36.1","autoprefixer":"^10.4.8","chalk":"^5.0.1","chokidar":"^3.5.3","cross-env":"^7.0.3","cssnano":"^5.1.13","daisyui":"^2.24.0","eslint":"^8.23.0","eslint-config-prettier":"^8.5.0","eslint-plugin-svelte3":"^4.0.0","fenceparser":"2.0.0","fff-flavored-frontmatter":"~0.2.2","github-slugger":"^1.4.0","mdast-util-to-string":"^3.1.0","mdsvex":"^0.10.6","npm-run-all":"^4.1.5","postcss":"^8.4.16","prettier":"^2.7.1","prettier-plugin-svelte":"^2.7.0","rehype-autolink-headings":"^6.1.1","rehype-external-links":"^1.0.1","rehype-slug":"^5.0.1","remark":"^14.0.2","remark-footnotes":"~2.0.0","shiki-twoslash":"^3.1.0","svelte":"^3.49.0","svelte-check":"^2.9.0","svelte-preprocess":"^4.10.7","tailwindcss":"^3.1.8","tslib":"^2.4.0","typescript":"^4.8.2","unist-util-visit":"^4.1.1","unocss":"^0.45.13","vite":"^3.1.0-beta.1","vite-plugin-pwa":"^0.12.4","workbox-window":"^6.5.4"})
Error during pnpm install
8:23:33 PM: Failing build: Failed to install dependencies

Are you sure you are using the code of this project for deployment? According to the log you gave, this pnpm-lock file seems to come from kwaa/blog. 🤔

i tried to fix problem with copying working urara website's pnpm-lock file but it doesnt work. Also i have tried to deploy urara again on another website and this problem occurs again.

It looks like i did very bad things in my repo :D. So i opened new blog repo and it gives another error to me. (Something similar is given by my problemfully blog repo). Given error code is from my new repo. Also i use netlify for deploying if it is necessary.
8:03:15 PM: Installing @sveltejs/adapter-netlify...
8:03:16 PM: Failed during stage "building site": Build script returned non-zero exit code: 2
8:03:16 PM:  ERR_PNPM_UNEXPECTED_STORE  Unexpected store location
8:03:16 PM: The dependencies at "/opt/build/repo/node_modules" are currently linked from the store at "/opt/build/repo/node_modules/.pnpm-store/v3".
8:03:16 PM: pnpm now wants to use the store at "/opt/buildhome/.pnpm-store/v3" to link dependencies.
8:03:16 PM: If you want to use the new store location, reinstall your dependencies with "pnpm install".
8:03:16 PM: You may change the global store location by running "pnpm config set store-dir  --global".
8:03:16 PM: (This error may happen if the node_modules was installed with a different major version of pnpm)
8:03:16 PM: error during build:
8:03:16 PM: Error: Could not install @sveltejs/adapter-netlify. Please install it yourself by adding it to your package.json"s devDependencies and try building your project again.
at get_adapter (file:///opt/build/repo/node_modules/.pnpm/@sveltejs+adapter-auto@2.1.0_@sveltejs+kit@1.25.0/node_modules/@sveltejs/adapter-auto/index.js:87:11)
8:03:16 PM:     at async adapt (file:///opt/build/repo/node_modules/.pnpm/@sveltejs+adapter-auto@2.1.0_@sveltejs+kit@1.25.0/node_modules/@sveltejs/adapter-auto/index.js:112:19)
8:03:16 PM:     at async adapt (file:///opt/build/repo/node_modules/.pnpm/@sveltejs+kit@1.25.0_svelte@4.2.0_vite@4.4.9/node_modules/@sveltejs/kit/src/core/adapt/index.js:26:2)
8:03:16 PM:     at async finalise (file:///opt/build/repo/node_modules/.pnpm/@sveltejs+kit@1.25.0_svelte@4.2.0_vite@4.4.9/node_modules/@sveltejs/kit/src/exports/vite/index.js:814:7)
8:03:16 PM:     at async Object.handler (file:///opt/build/repo/node_modules/.pnpm/@sveltejs+kit@1.25.0_svelte@4.2.0_vite@4.4.9/node_modules/@sveltejs/kit/src/exports/vite/index.js:836:5)
8:03:16 PM:     at async PluginDriver.hookParallel (file:///opt/build/repo/node_modules/.pnpm/rollup@3.29.1/node_modules/rollup/dist/es/shared/node-entry.js:25461:17)
8:03:16 PM:     at async Object.close (file:///opt/build/repo/node_modules/.pnpm/rollup@3.29.1/node_modules/rollup/dist/es/shared/node-entry.js:26721:13)
8:03:16 PM:     at async build (file:///opt/build/repo/node_modules/.pnpm/vite@4.4.9_@types+node@20.6.0/node_modules/vite/dist/node/chunks/dep-df561101.js:48021:13)
8:03:16 PM:     at async CAC. (file:///opt/build/repo/node_modules/.pnpm/vite@4.4.9_@types+node@20.6.0/node_modules/vite/dist/node/cli.js:822:9)
8:03:16 PM:  ELIFECYCLE  Command failed with exit code 1. (https://ntl.fyi/exit-code-1)
8:03:16 PM: ERROR: "kit:build" exited with 1.
8:03:16 PM:  ELIFECYCLE  Command failed with exit code 1. (https://ntl.fyi/exit-code-1)
8:03:16 PM:
8:03:16 PM: "build.command" failed
8:03:16 PM: ────────────────────────────────────────────────────────────────
8:03:16 PM:
8:03:16 PM:   Error message
8:03:16 PM:   Command failed with exit code 1: npx pnpm i --store=node_modules/.pnpm-store && npx pnpm build (https://ntl.fyi/exit-code-1)
8:03:16 PM:
8:03:16 PM:   Error location
8:03:16 PM:   In build.command from netlify.toml:
8:03:16 PM:   npx pnpm i --store=node_modules/.pnpm-store && npx pnpm build
8:03:16 PM:
8:03:16 PM:   Resolved config
8:03:16 PM:   build:
8:03:16 PM:     command: npx pnpm i --store=node_modules/.pnpm-store && npx pnpm build
8:03:16 PM:     commandOrigin: config
8:03:16 PM:     environment:
8:03:16 PM:       - NPM_FLAGS
8:03:16 PM:       - AWS_LAMBDA_JS_RUNTIME
8:03:16 PM:     publish: /opt/build/repo/build
8:03:16 PM:     publishOrigin: config
8:03:16 PM:   functions:
8:03:16 PM:     "*":
8:03:16 PM:       node_bundler: esbuild
8:03:16 PM: Build failed due to a user error: Build script returned non-zero exit code: 2
8:03:16 PM: Failing build: Failed to build site

This bug should be caused by the removal of the "@sveltejs/adapter-netlify": "^2.0.7" package in 417b5d0. I looked at my Netlify build list and found this issue as well. I don’t know if the demo site is still built normally, but it can be repaired. You just need to reinstall it.
# install the latest `@sveltejs/adapter-netlify` dependency into package.json and pnpm-lock.yaml
pnpm add -D @sveltejs/adapter-netlify

Then submit the commit again and it should be work

Sorry for disturbing again but i am not very good at this things. I am still learning. Where should i write this command piece?

This command should be executed on your device terminal. Clone your Urara repository locally and cd to the directory before executing it. You can refer Quick Start | Urara Docs page

Why this errors starting to occur nowadays? I tried to change blog photo and some config changes and it gives commit error. In past i dont have any errors for doing this things.
0s
Run pnpm install --frozen-lockfile
 ERR_PNPM_LOCKFILE_CONFIG_MISMATCH  Cannot proceed with the frozen installation. The current "overrides" configuration doesn't match the value found in the lockfile
Update your lockfile using "pnpm install --no-frozen-lockfile"
Error: Process completed with exit code 1.

Which of the methods I mentioned above did you choose? I'm not quite sure what causes this problem.
But according to this log, it should still be caused by the mismatch between your package.json and pnpm-lock.yaml files.
If you want to modify dependencies, it is recommended to use the pnpm command instead of manually modifying it, because pnpm can automatically handle these two files for you.

It looks like something went wrong with the template, I'll fix it afterward.

Can you retry based on the latest commit (https://github.com/importantimport/urara/commit/97908c3336a48966af80410237501c90047f9c48)? If it's fixed, I'll close the issue.

I've tried to deploy a new site from new repo from new template and firstly, it works very well but when i tried to add my old website's blog pages it gives me an error
2:40:52 PM: Node.js v21.6.1
2:40:52 PM:  ELIFECYCLE  Command failed with exit code 1. (https://ntl.fyi/exit-code-1)
2:40:52 PM: ERROR: "kit:build" exited with 1.
2:40:52 PM:  ELIFECYCLE  Command failed with exit code 1. (https://ntl.fyi/exit-code-1)
2:40:52 PM:
2:40:52 PM: "build.command" failed
2:40:52 PM: ────────────────────────────────────────────────────────────────
2:40:52 PM:
2:40:52 PM:   Error message
2:40:52 PM:   Command failed with exit code 1: npx pnpm i --store=node_modules/.pnpm-store && npx pnpm build (https://ntl.fyi/exit-code-1)
2:40:52 PM:
2:40:52 PM:   Error location
2:40:52 PM:   In build.command from netlify.toml:
2:40:52 PM:   npx pnpm i --store=node_modules/.pnpm-store && npx pnpm build
2:40:52 PM:
2:40:52 PM:   Resolved config
2:40:52 PM:   build:
2:40:52 PM:     command: npx pnpm i --store=node_modules/.pnpm-store && npx pnpm build
2:40:52 PM:     commandOrigin: config
2:40:52 PM:     environment:
2:40:52 PM:       - NPM_FLAGS
2:40:52 PM:     publish: /opt/build/repo/build
2:40:52 PM:     publishOrigin: config
2:40:52 PM:   functions:
2:40:52 PM:     "*":
2:40:52 PM:       node_bundler: esbuild
2:40:53 PM: Build failed due to a user error: Build script returned non-zero exit code: 2
2:40:53 PM: Failing build: Failed to build site

I've tried to deploy a new site from new repo from new template and firstly, it works very well but when i tried to add my old website's blog pages it gives me an error

Little information is available.  Maybe you can look for more detailed error reports?

How can i do it in netlify

How can i do it on netlify

idk. maybe you could try to build it locally or provide a public minimal replication for debugging.

Thanks very very much for your attention and time and sorry for my mistakes. It looks like i didnt change configs so this problem begins and sorry i dont see main error on top of error text i sent. My problems fixed after some changes.


Update working-groups.md

Adding communications WG to website. will update and submit another PR once README and charter proposal are finalized

will update and submit another PR once README and charter proposal are finalized
could we make all these changes in one PR #247 for simplicity

@caradelia @leonardpahlke I will close this PR since it's merged into #247 ☺


Querying by child objects?

Is there anyway to query efficiently when trying to retreive parent objects that have child objects on them?
i.e. supposing I have a model with:
    models.Node = Bookshelf.Model.extend({
        tableName: 'node',
        idAttribute: 'nodeid',

        notifications: function() {
            return this.hasMany('Notification', 'nodeid');
        }
    });

    models.Notification = Bookshelf.Model.extend({
        tableName: 'notifications',
        idAttribute: 'notifyid',

        node: function() {
            return this.belongsTo('Node', 'nodeid');
        }
    });

I then want to get any Node objects which have Notification's that match some criteria (in this case answeredby is null (I'm working with the OpenNMS database).
The problem is I can't seem to find any neat way to do this without a lot of fiddling with the objects. Am I just missing something?
i.e. does Bookshelf have a method to query by the child object (and retreive those rows) then query for the parent objects and insert the child objects into their relations?

Because Bookshelf doesn't know your whole schema upfront, you need to fetch the notifications and use withRelated: 'node' and then just return reduce the output to get the node objects. If you want to do this efficiently, drop down to knex via the query method and use a join.

I'm somewhat confused then as to what the belongsTo() hints are providing in my models then as opposed to a hasOne() hint?
i.e. the query I basically want to run is something like
SELECT node.*, notification.* FROM notifications
INNER JOIN node ON notification.nodeid=node.nodeid
WHERE notification.answeredby IS NULL

which you could also separate as 2 queries
SELECT notification.* FROM notifications
WHERE notification.answeredby IS NULL

and
SELECT node.* FROM nodes
WHERE nodeid IN (<nodeids we got from the top one>)

Which feels like they should be implied by belongsTo() (as opposed to hasOne())

hasOne() <- The other model contains the foreign key
belongsTo() <- The current model contains the foreign key
It seems to me that, judging by your first example, a node hasOne notification, and that a notification belongsTo a node.

Actually a node hasMany() notifications. My previous example was just to ask how belongsTo differs from hasOne - since a notification hasOne node as much as it belongsTo a node.
What I'd like to be able to do with that model is something like:
collection = Node.forge({ notifications: {answeredby: null} } ).fetchAll({withRelated: 'notifications' });

and get back a collection of nodes executed by a query like that.

Will, would you mind of sharing how you resolved this question?

I ended up writing a function which just does the inversion for me manually - i.e. I query on notifications { answeredby: null } with the related nodes, then monkey around with the bookshelf data structure to reverse the object graph.
I'd like to add this directly as a bookshelf function, but the need to make it work was a priority. I can post the function I wrote when I get a chance.

@wrouesnel I think you can do something like this:
models.Node = Bookshelf.Model.extend({
  /* ... */
  unansweredNotifications: function() {
    return this.hasMany('Notification', 'nodeid').query('where', 'unanswered', null);
  }
})

Did you try that? You might have to do a raw where due to the null, but I'm not sure about that.


How can i make UN_FIXED footer?

How can i make UN_FIXED footer?
I have viewed the document on https://getmdl.io/.　 But it hadn't mentioned that how can i create an UN-fixed footer.
Also ,do you got Pushpin?
Just like http://materializecss.com/pushpin-demo.html

I am a chinese student and i Really need help.

What do you mean by fixed footer? MDL footer isn't fixed by default.


Skipping tests if a plugin doesn't exist

In multiplexer and header_rewrite

Hmmm, under what conditions would header_rewrite not build? That seems odd.

Not so important for header_rewrite but we have a test for multiplexer which makes this useful.

[approve ci]

I added the skip to header_rewrite just for the sake of it at the moment since I was adding it to multiplexer. But I suppose I will remove it since it's a bigger problem if header_rewrite doesn't build.

[approve ci]


Histogram widget should have the ALL SELECTED when having all range by default

Jose can you attach the design?

E.g:

Working like that!


bb-reproduce: not able to copy file due to name length

Apparently filesystems, such as ext4, have a limitation not only on the full path size, which is usually not a big problem, but also for length of file names (who would have thought?).
The names generated by the bb-reproduce tool include function names and are very precise, sometimes it may generate files with 300+ symbols in their names, but such files can't be stored onto an ext4 fs.
We need to cut out the middle part of such long names or find some other "creative" ways to limit the length.

fixed in dev


Add version for Notification::set_priority

Part of https://github.com/gtk-rs/gir/issues/403

cc @GuillaumeGomez. @jplatte

It'd be better to be able to fully generate this but thanks a lot for the fix meanwhile!

Since I was cc'ed, thought I'd just mention that this PR does solve the issues I was having.


refactor(client_openxr): :recycle: Move extra xr ext wrappers in-tree; show body skeleton in lobby

We should perhaps think of creating easier ways to just pass through openxr extensions as they are without re-encoding the data

Are you talking about body tracking or in general? I don't think if there is any good way to just passthrough data from openxr because we have to implement support for each extension individually. My plan for the next big protocol update (v21) is to add a byte vec to all stream packets, so we can add more functionality without breaking the protocol.


Module not found: Can't resolve 'react-dom/client'

On NextJS
info  - automatically enabled Fast Refresh for 1 custom loader
wait  - compiling /_error (client and server)...
error - ./node_modules/lamina/index.js:12:0
Module not found: Can't resolve 'react-dom/client

package.json
"dependencies": {
 ...
    "lamina": "^1.1.9",
    "react": "17.0.2",
    "react-dom": "17.0.2",
...
  },

Thanks for any input!

The latest patchs >=1.1.9 is meant to work with React 18. Please update to react 18 or downgrade lamina to <=1.1.8
Let me know if that works

That seems to have done the trick --thank you @FarazzShaikh!

Cheers!


Correcting Saving 2G/3G events - conflicts resolved

This is the copy of PR #66 which has some conflicts and it was impossible to push the resolution to the original repo and branch. Merging this one and closing the previous.

Found 8 violations:
Reporter: cppcheck-raporter
Rule: unusedFunction
Severity: INFO
File: /var/jenkins_home/workspace/j-pet-geant-4-PRs-root-6/CADMesh/examples/basic/basic.cc L51
The function 'Construct' is never used.

Reporter: cppcheck-raporter
Rule: redundantAssignment
Severity: INFO
File: /var/jenkins_home/workspace/j-pet-geant-4-PRs-root-6/CADMesh/examples/external/external.cc L99
Variable 'cone_mesh' is reassigned a value before the old one has been used if variable is no semaphore variable.. Variable 'cone_mesh' is reassigned a value before the old one has been used. Make sure that this variable is not used like a semaphore in a threading environment before simplifying this code.

Reporter: cppcheck-raporter
Rule: redundantAssignment
Severity: INFO
File: /var/jenkins_home/workspace/j-pet-geant-4-PRs-root-6/CADMesh/examples/external/external.cc L93
Variable 'cone_mesh' is reassigned a value before the old one has been used if variable is no semaphore variable.. Variable 'cone_mesh' is reassigned a value before the old one has been used. Make sure that this variable is not used like a semaphore in a threading environment before simplifying this code.

Reporter: cppcheck-raporter
Rule: unusedFunction
Severity: INFO
File: /var/jenkins_home/workspace/j-pet-geant-4-PRs-root-6/CADMesh/src/BuiltInReader.cc L81
The function 'BuiltIn' is never used.

Reporter: cppcheck-raporter
Rule: noExplicitConstructor
Severity: INFO
File: /var/jenkins_home/workspace/j-pet-geant-4-PRs-root-6/CADMesh/tests/Simulator.hh L29
Class 'DetectorConstruction' has a constructor with 1 argument that is not explicit. Such constructors should in general be explicit for type safety reasons. Using the explicit keyword in the constructor means some mistakes when using the class can be avoided.

Reporter: cppcheck-raporter
Rule: unreadVariable
Severity: INFO
File: Core/DetectorConstruction.cpp L1368
Variable 'rotationNew' is assigned a value that is never used.

Reporter: cppcheck-raporter
Rule: variableScope
Severity: INFO
File: Core/DetectorConstruction.cpp L1332
The scope of the variable 'phantMatExt' can be reduced. Warning: Be careful when fixing this message, especially when there are inner loops. Here is an example where cppcheck will write that the scope for 'i' can be reduced:\012void f(int x)\012{\012    int i = 0;\012    if (x) {\012        // it's safe to move 'int i = 0;' here\012        for (int n = 0; n < 10; ++n) {\012            // it is possible but not safe to move 'int i = 0;' here\012            do_something(&i);\012        }\012    }\012}\012When you see this message it is always safe to reduce the variable scope 1 level.

Reporter: cppcheck-raporter
Rule: unmatchedSuppression
Severity: INFO
File: Core/DetectorConstruction.cpp L71
Unmatched suppression: unusedFunction


discussion: move the (very complex) npm run scripts for linting to quality gate package json

suggestion: we move the very complex npm run scripts for linting to the package json of the quality gate instead of having them in the boilerplate
this would result in something like
"scripts": {
    "lint": "qualitygate:lint",
    "lint:styles": "qualitygate:styles",
    "lint:eslint": "qualitygate:eslint",
  },

in boilerplate / project package.json and would make things much cleaner there. we also gain the freedom to change the lint run scripts with a qualitygate update without users have to manually update package.json in the project.
We can also add a hint in the readme, that of course every user can also use eslint etc directly in projects package json, when he wants to customize something there.
what do you think?

Would appreciate that as well, as you said: it would make the package.json much cleaner.

@SheepFromHeaven whars your opinion? if you agree i would take that one and work on it.

No longer relevant I think since only 2 arguments are needed - the file (or glob) and "--fix"

Agree with @tiagomapmarques


Cleanup post multitenancy

After #1478

Speed up subscription fetching. Consider if cache timed expiration is needed / worthwhile for new subscription access scenarios.
Add more test coverage
Address follow-up:

Decide hooks usage of environments
Add comment for AADSTS50076

Check azd pipeline config behavior

Wrote this too generally. I don't think we lose out on much by not doing this.


[CPP tests] Wait for mockZTS to start before connecting to it

Fixes #6298
Motivation
There's a long outstanding flaky CPP test AuthPluginTest.testAthenz which causes CPP builds to fail frequently.
There's a race condition in the test. mockZTS might not be started. Error message is
ERROR [140642816536256] ZTSClient:367 | Response failed for url http://localhost:9999/zts/v1/domain/pulsar.test.provider/token. Error Code 7 .
Error Code 7 is CURLE_COULDNT_CONNECT (7) - Failed to connect() to host or proxy. in libcurl error codes.
Modifications
Wait for mockZTS to start before connecting to it.

@merlimat That's for the review and suggestions. I applied the changes. PTAL


switch getProgramAccounts to use base64

Creating a simple fix to fix the issue for https://github.com/project-serum/spl-token-wallet/issues/349
Simply calling the the RPC with encoding set to base64, using the bs58 library to convert this into a bs58 Uint8Array for further processing.

Fixed by https://github.com/project-serum/spl-token-wallet/pull/352


Remove old EL using

${} -> #{}
I was trying to find all places with old syntax, but maybe I didn't find everything...

cherry-picked
Thanks!


Add support for cross-platform and correct readme

Commit Message
Some code referenced from git@github.com:kmahyyg/ynu2ics.git
What I did

[x] | - Write a tutorial in my blog
[x] | - Fix Python version inappropriate in README.md
[x] | - Reformat code using Pycharm 2018.2.1
[x] | - Change alarm to 25 mins before class begins
[x] | - Add cross platform support for opening CAPTCHA image and *.ics file
[x] | - Remove print(generator.term_index) in main.py to prevent from misunderstanding
[x] | - Dependencies management using requirements.txt
[x] | - Fix the problem that Android users cannot import the generated *.ics file.

Any question?
Reply here or chat with me via Telegram

I don't modify any of your iCalendar file generator in fact. But now, it only could be imported via icloud.com. Both Google Calendar, Huawei Calendar won't import. There's a bug here.
DON'T MERGE! I'll fix it later.

Thank you very much for your contribution😀


Request For Comment: Deprecation Process

Problem
There have been a couple instances of features which were implemented but are no longer our recommended approach (#1029 and now #1080). So far we have sought to maintain support while encouraging the preferred pattern. However, that still leaves us supporting the old pattern.
I would like to suggest that we have a process for how features are deprecated.
Suggested Solution
I suggest a multi-step approach

Implement preferred feature

Document on typedoc.org preferred approach and note discouraged pattern

In a later release start logging warnings of deprecated pattern

Note change in changelog as breaking change to encourage users to switch to new feature

In a later release completely remove deprecated feature

Please let me know what you think of this plan. Concerns and alternate suggestions welcome.

This seems reasonable to me, but we should probably define a timeline (or # of releases) for each of the steps. My main concern is that we need to make deprecated patterns and their replacements very easy to find. For a documentation tool, we still have pretty poor docs despite the recent work.
More things to consider

What is our public API? Almost every plugin imports stuff from typedoc/dist/... which seems like accessing internals. Unfortunately, there is no better way to do it right now. #521
Plugins can either specify a load function or export = a function #594

I've started leaving comments in the code when I come across something that wants deprecating, they usually go something like this:
// discourage 0.13, warn 0.17, remove 0.19

To mark when a given feature began to be discouraged, when we should start giving warnings (I'm not planning any warnings before 0.17), and when it should be removed. Generally I don't want to start warning on a given feature until at least one minor version has passed, and it shouldn't be removed until at least one minor version after that, though for more common options I've been leaving larger gaps.
In particular, the src property can be used in typedoc.json to specify the input files. In 0.16 the inputFiles option will be available to replace it, so in 0.17 I'll add a warning while still preserving the previous behavior. Then in 0.19 the logic to convert src to inputFiles will be removed along with the warning.
This is in contrast to support for autodiscovery of typedoc.js, which is an incredibly popular feature (>40% of the configuration files I've looked at for TypeDoc use JS instead of JSON config files!). I don't really want to deprecate/remove that until we have a properly stable API... but I will be updating docs to encourage the use of JSON files.


Seems google wants a secure http request now

From what I see it is still able to retrieve most of the data, only the image URL is not able to be retrieved.

When I manually update the URL to use https instead of http it works fine.

The URL scheme can be changed using the URI class. A example:
Uri url = book.imageLinks['coverImage'];
if (url.isScheme('http')) url = Uri.parse(book.imageLinks['coverImage'].replaceAll('http//:', 'https//:'));

Yea that is a bit cleaner than what I did, but would it be better to do that within the package?

This was implemented in version 4.1.0. With the property reschemeImageLinks, you can automatically rescheme the image links. It defaults to false
Example:
void main(List<String> args) async {
  final books = await queryBooks(
    'twilight',
    maxResults: 3,
    printType: PrintType.books,
    orderBy: OrderBy.relevance,
    reschemeImageLinks: true,
  );
  books.forEach((book) {
    final info = book.info;
    print('$info\n');
  });
}

Awesome! Works great! Thanks you 😊


Allow adding prefix for fields with extends tag

Added new syntax like extends('Prefix') to enable matching all
extended fields as PrefixFieldName.
Close go-xorm/xorm#1270

Codecov Report

Merging #1284 into master will increase coverage by 0.09%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #1284      +/-   ##
==========================================
+ Coverage   57.36%   57.45%   +0.09%
==========================================
  Files          44       44
  Lines        7817     7837      +20
==========================================
+ Hits         4484     4503      +19
  Misses       2777     2777
- Partials      556      557       +1

Impacted Files
Coverage Δ

tag.go
79.31% <100%> (+2.21%)
:arrow_up:

engine.go
61.79% <100%> (+0.25%)
:arrow_up:

xorm.go
68.18% <0%> (-1.52%)
:arrow_down:

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 ce804ae...5feef8d. Read the comment docs.

Join Table Alias Name or prefix of the name, which is better?
SELECT <extends_name>.width, <extends_name>.height

instead of
SELECT <extends_name>width, <extends_name>height

IMO having just prefix is better here since it refers to what the column name of the query result should be changed to, it doesn't have to have anything in common with the table (the prefix I mean).

Sorry to bother you, but would I be able to get an ETA on this review? This is kind of a blocking change for me.

How to handle SizeClosed *Size xorm:"extends('')"` ?

Maybe as if there was no argument? So the same as just xorm:"extends" ?

@mskrip I think it's reasonable.

@lunny Added test for that case

@lunny ping

@mskrip will do last review tomorrow morning.

@lunny Okay, thank you

@mskrip Thanks!


update osx-kvm lock version

Update to the latest OSX-KVM

Why? What are the differences we need?

@MatthewCroughan Not sure how this project affect from that, but the author has update quite a few OpenCore files.
see https://github.com/kholia/OSX-KVM/commit/a9b20147deef2ca9ffe43567aba51853a18150f2

We should find a way to compile it ourselves, rather than relying on OSX-KVM

I think https://github.com/kraxel/imagefish is required for running the appropriate script from OSX-KVM, which is not yet packaged in Nixpkgs. I would be willing to help with packaging imagefish.

Yeah, this is a more productive direction than just updating and depending upon OSX-KVM, I would love to move in that direction.


Clarify the FOV setting in the 3D editor camera is vertical FOV

Happy new year :slightly_smiling_face:
Preview
There's a tooltip if you hover the text field:

It should be clarified here as well:

It should be clarified here as well:

Done :slightly_smiling_face:

I'm not my reviews show up for anyone, so I'll leave a comment. Sorry if it's redundant.
I think the lower case "v" in vertical is a bit odd, and inconsistent with the rest of the editor. Making it capital or saying VFOV (which is an appropriate term) would look better IMO.

I'm not sure my reviews show up for anyone, since I'm not a member and they're not visible when I'm not logged in,

Any user can review, add comments and request changes! It should work completely fine. You may have forgotten to submit your review (there's a big green button on the top right of the files tab), as they are not showing up to anyone.

Hah, doy. Thank you.

Thanks!


APEXCORE-405 Allow client to shutdown and check finished through app handle.

Based on my findings when trying to use this in Beam.
@PramodSSImmaneni @vrozov please merge, it is blocking the release.

Will check today.
On Nov 24, 2016, at 6:28 PM, Thomas Weise<EMAIL_ADDRESS>wrote:
Based on my findings when trying to use this in Beam.
@PramodSSImmaneni https://github.com/PramodSSImmaneni @vrozov
https://github.com/vrozov please merge, it is blocking the release.
You can view, comment on, or merge this pull request online at:
https://github.com/apache/apex-core/pull/423
Commit Summary

APEXCORE-405 Allow client to query if application was finished.

File Changes

M api/src/main/java/org/apache/apex/api/EmbeddedAppLauncher.java
https://github.com/apache/apex-core/pull/423/files#diff-0 (11)
M api/src/main/java/org/apache/apex/api/Launcher.java
https://github.com/apache/apex-core/pull/423/files#diff-1 (54)
M engine/src/main/java/com/datatorrent/stram/StramLocalCluster.java
https://github.com/apache/apex-core/pull/423/files#diff-2 (5)
M
engine/src/main/java/org/apache/apex/engine/EmbeddedAppLauncherImpl.java
https://github.com/apache/apex-core/pull/423/files#diff-3 (33)
M
engine/src/main/java/org/apache/apex/engine/YarnAppLauncherImpl.java
https://github.com/apache/apex-core/pull/423/files#diff-4 (61)

Patch Links:

https://github.com/apache/apex-core/pull/423.patch
https://github.com/apache/apex-core/pull/423.diff

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/apache/apex-core/pull/423, or mute the thread
https://github.com/notifications/unsubscribe-auth/AENquyotWFGxN9Bw_40rPjW80jUqYCJTks5rBkfNgaJpZM4K8D9N
.

Is the Beam yarn launch still open, I was planning to look at that after 405 got merged.

I'm doing some initial work for upcoming demo, will let you know when that is done.


Make it easier to select a pipenv environment

If you are a regular user of pipenv, then you'll end up with a few pipenv environments in the environments list.
Selecting the right pipenv environment isn't easy when paths are long.

We should only list the virtual environment from pipenv that is tied to the workspace folder.

We should only list the virtual environment from pipenv that is tied to the workspace folder.

Disagree, we're then going back to what it was. I.e. if a PipFile exists, then we're only displaying pipenv environments. This is how it used to behave, and we reverted it.
What I'm proposing is figuring out the workspace (folder name) from the pipenv environment and using that as the meaningful display name for the environment. Thus making it easier for users to select an environment. I.e. they'd know what folder/workspace each environment belongs to.

Sorry, I should have been more clear. What I meant was we only list a single virtual environment from pipenv at any one time as well as all the other possible environments.

https://docs.pipenv.org/advanced/#custom-virtual-environment-location specifies how pipenv chooses the directory to install into. If we use that info when possible then the best-effort solution should cover most cases.

as well as all the other possible environments.

I think all we need to do is look for other virtual environments in the same to directory. I missed the key word possible in your response. Just noticed that. Sorry

Done with #1351


Clean up getAQ() output

things like
(xxx)
0+
1*
0*
```

You mean to make the output more human-readable? Yep, I'm fine with that. I'd only ever envisaged as helper for other code, but may be useful for checking


[#1111] fix: Shuffle server can not delete remote storage path in sec…

What changes were proposed in this pull request?
Fix the bug that shuffle server can not delete remote storage path in security hdfs.
Why are the changes needed?
Fix: #1111
How was this patch tested?
unit test and test in cluster.

@zuston Could you help me review this pr?

Codecov Report

Merging #1122 (b885751) into master (8b8801b) will decrease coverage by 1.45%.
Report is 3 commits behind head on master.
The diff coverage is 100.00%.

@@             Coverage Diff              @@
##             master    #1122      +/-   ##
============================================
- Coverage     56.64%   55.20%   -1.45%
- Complexity     2087     2092       +5
============================================
  Files           317      316       -1
  Lines         13782    14072     +290
  Branches       1228     1264      +36
============================================
- Hits           7807     7768      -39
- Misses         5559     5888     +329
  Partials        416      416

Files Changed
Coverage Δ

.../org/apache/uniffle/server/ShuffleTaskManager.java
75.88% <100.00%> (-0.42%)
:arrow_down:

... and 39 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

@zuston Ping.


test: RpcBatcher Tests

Implements 2 tests for RpcBatcher.
Also includes minor naming and styling changes as small refactorings:

rename MessageBatcher as RpcBatcher
rename FrameQueueItem as RpcFrameQueueItem
rename RpcQueueProcessing as RpcQueueProcessor

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Jeffrey Rainy seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


[DataFactory] Square add connectionProperties property

MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Contribution checklist:

[x] I have reviewed the documentation for the workflow.
[x] Validation tools were run on swagger spec(s) and have all been fixed in this PR. How to fix?

If any further question about AME onboarding or validation tools, please view the FAQ.
ARM API Review Checklist

[x] Service team MUST add the "WaitForARMFeedback" label if the management plane API changes fall into one of the below categories.

adding/removing APIs.
adding/removing properties.
adding/removing API-version.
adding a new service in Azure.

Failure to comply may result in delays for manifest application. Note this does not apply to data plane APIs.

[x] If you are blocked on ARM review and want to get the PR merged urgently, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.
Please follow the link to find more details on API review process.

/azp run automation - sdk

Can one of the admins verify this patch?

/azp run

/openapi pipeline

@qianwens   Could you tell me why you rerun this PR, I will take care of this.


Render menu containing only siblings of active menu item

I'm curious, is there a way to render a partial menu containing siblings (and maybe children) of the current menu item?
Given a menu tree:
Items
--> Bat
--> Ball
------> Large Ball
------> Medium Ball
------> Small Ball
--> Bottle

If the user is on the Large Ball page, I'd like to be able to render all siblings. In my real case, they would be rendered as tabs.
#84 may be the same thing, but it seems like that use case is actually rendering all the ancestors as well.
It seems I can do this:
{{ knp_menu_render(['AcmeDemoBundle:Builder:mainMenu', 'Items', 'Ball']) }}

But that would require that I know the name of the current menu item. If I can get that in twig somehow, I guess that would be fine and I could just fill it in there, but ideally there'd be some baked in functionality to support rendering sub-trees.

Has anyone figure out how to do this or is a custom template required? It appears I can limit the depth in using the depth option but I can not start at a specific depth. With knp_menu_get_current_item() I can start at the depth of the current page but I would like to always start the second depth of the root. Also what does matchingDepth actually do? I can't find any doc on it and it appears to do nothing at all.

I also need this and it seems there is no really alternative to knpmenu on symfony. I also can't find out what matchingDepth does. Has anyone found a solution in this 5 years the bug is open now?

I also can't find out what matchingDepth does.

See https://github.com/KnpLabs/KnpMenu/blob/master/doc/01-Basic-Menus.md#other-rendering-options
matchingDepth: The depth of the scan to determine whether an item is an ancestor of the current item


Not quite 90 degrees, in Modelica.Mechanics.Rotational.Examples.CoupledClutches

Reported by hansolsson on 4 Apr 2016 12:54 UTC
Some example models use 1.57 as an approximation for pi/2 - that seems a bit inaccurate, and is especially an issue if you look at it in degrees:
Modelica.Mechanics.Rotational.Examples.CoupledClutches
Modelica.Blocks.Examples.PID_Controller
I would prefer to use more digits - even if it requires updated reference results for these two models.
Whereas the following ones use a good value (also for 45 degrees).
Modelica.Mechanics.Rotational.Examples.Backlash
Modelica.Fluid.Fittings.BaseClasses.Bends.CurvedBend.Geometry
Modelica.Mechanics.MultiBody.Examples.Elementary.RollingWheelSetDriving
(The ones for pi also use good values, and 2*pi is only used in Modelica.Electrical.Analog.Examples.ShowSaturatingInductor for stopTime and it seems good enough.)
Clearly this is not a blocking issue.

Migrated-From: https://trac.modelica.org/Modelica/ticket/1975

@HansOlsson Resolved in the most straight-forward way in branches master and maint/3.2.2.


Running as a sub application

Hi
I would like that Passcore is reachable with the URL https://mydomain.com/pwtool
I've copied all files under "c:\inetpub" and created an application (For the Default Website) with a physical path to "C:\inetpub"
Ive modified index.html with
As soon as I tip the URL https://mydomain.com/pwtool, it throws me back to https://mydomain.com/
Is there a way that the URL stays at https://mydomain.com/pwtool
System:
Windows Server 2019 / IIS 10
.NET Hosting 2.1.1

If you need to run Passcore as a subfolder, you need to set up a virtual directory at your root path.

Ok, I will try it. many thanks


Duplicate tooltip in shortcuts window

Microsoft PowerToys version
0.78.0
Installation method
GitHub
Running as admin
None
Area(s) with issue?
General
Steps to reproduce
After trying to figure out why awake isn't there for whatever reason, it seems that opening it multiple times will at some point get some tooltips to get stuck in window:

✔ Expected Behavior
No response
❌ Actual Behavior
No response
Other Software
No response

This has been worked on during the 0.80 release cycle.
Please update to the latest release: https://github.com/microsoft/PowerToys/releases