Update to standard@12

This PR updates to standard v12 and fixes any new violations reported by running npx standard --fix.

Looks like Travis doesn't like that probot is using the spread operator - https://travis-ci.org/behaviorbot/first-pr-merge/builds/433862348#L890
Not sure what the best next step support that syntax / fix the build is here. Is it an upgrade of probot, or running tests on Node 8?


tour: [Could not Understand the context]

Context: https://tour.golang.org/flowcontrol/10
Change the title above to describe your issue and add your feedback here, including code if necessary

switch i {
case 0:
case f():
}

From https://go.dev/tour/flowcontrol/9

Another important difference is that Go's switch cases need not be constants

For example:
package main

import "fmt"

func main() {
	switch i := 2; i {
	case 0:
		fmt.Println("i == 0")
	case f1():
		fmt.Println("i == resault of func f1()")
	case f2():
		fmt.Println("i == resault of func f2()")
	case f3():
		fmt.Println("i == resault of func f3()")
	}
}

func f1() int {
	fmt.Println("Inside func f1()")
	return 1
}

func f2() int {
	fmt.Println("Inside func f2()")
	return 2
}

func f3() int {
	fmt.Println("Inside func f2()")
	return 3
}

Inside func f1()
Inside func f2()
i == resault of func f2()

Program exited.

I think this example in the context may be write more clear.


[sdl2_gfx] initial port

https://sourceforge.net/projects/sdlgfx/

@DavidHamburg,
Thanks for having already signed the Contribution License Agreement. Your agreement has not been validated yet. We will now review your pull request.
Thanks,
Microsoft Pull Request Bot

Thanks for making this PR!
I made a few tweaks while merging:

Don't define DLL_EXPORT when building static libs
Take advantage of SDL_GFX_SKIP_HEADERS


Provide supporting classes to wrap existing TCPServer and UDPSocket instances

As you asked for here https://groups.google.com/forum/#!topic/celluloid-ruby/zDG87hLmNyQ
This is a general outline. Looking for feedback before investing any more time into this.

This should work already, no?
Celluloid::IO::TCPSocket.new(ruby_tcpsocket)

@tarcieri yes it could be, as I said it's just a general outline. Overloading constructors is okay but it also makes things a bit messy, if I know explicitly what I want, I'd rather just name it. But, ::TCPServer constructor obviously can't accept another TCPServer instance by default, so you'd be changing that behaviour/assumption.

Not sure if this is a goer or not, perhaps we need to discuss more /cc @tarcieri @digitalextremist @e2

@ioquatix - if I'm getting this right, you want to use Celluloid and Ruby classes interchangeably, correct?
This includes constructors. What I think the conflict here is - that you want to use the Celluloid classes as both "wrappers" (by design - add Celluloid functionality) and as non-wrappers (as sockets, etc.).
And the constructors are the problem, because if you extend a constructor, it no longer matches the underlying object (socket) - and I believe that's what you're trying to avoid.
As an analogy, I think it's like the Fixnum/Bignum problem. The Fixnum/Bignum is solved through promoting one type to the other in a transparent way (as opposed to having a Bignum-like "wrapper" for Fixnum or using inheritance). I'm not sure if that's possible here, or if it make sense.
When you're doing arithmetic, you don't care whether something is a bignum or fixnum (Socket or C:Socket), and if the calculations are out of bounds (by analogy - using Celluloid-specific features), you get everything promoted to the common denominator.
Just thinking out loud here.

@e2 Practically speaking, it's used here
https://github.com/ioquatix/rubydns/blob/5f27bf2e3d444772f80c512219b759891aa61c31/lib/rubydns/server.rb#L147-L173
It allows users to provide already connected sockets for DNS server functionality.

if I'm getting this right, you want to use Celluloid and Ruby classes interchangeably, correct?

Yes, I guess at a certain level this is correct.

This includes constructors. What I think the conflict here is - that you want to use the Celluloid classes as both "wrappers" (by design - add Celluloid functionality) and as non-wrappers (as sockets, etc.).

Actually I don't really care about how it works, just that it's possible and in this case I've preferred an explicit approach.

And the constructors are the problem, because if you extend a constructor, it no longer matches the underlying object (socket) - and I believe that's what you're trying to avoid.

I guess you mean if you change Celluloid::IO::TCPServer to accept an existing ::TCPServer argument? It's possible but it's a little bit too much magic IMHO.

As an analogy, I think it's like the Fixnum/Bignum problem. The Fixnum/Bignum is solved through promoting one type to the other in a transparent way (as opposed to having a Bignum-like "wrapper" for Fixnum or using inheritance). I'm not sure if that's possible here, or if it make sense.

I agree this is nice, but I don't believe it's possible here, though feel free to propose something.

When you're doing arithmetic, you don't care whether something is a bignum or fixnum (Socket or C:Socket), and if the calculations are out of bounds (by analogy - using Celluloid-specific features), you get everything promoted to the common denominator.

Yeah, it would be nice if Celluloid::IO::*Socket wasn't required, but unfortunately it appears impossible to avoid.

I think I get it.
Shouldn't C::UDPSocket simply be modified to accept a socket just like TCPSocket does here:
https://github.com/celluloid/celluloid-io/blob/master/lib/celluloid/io/tcp_socket.rb#L39
?

@e2 Yes that is one option, but I opted not to monkey patch the existing API in RubyDNS. I guess IMHO it isn't entirely obvious that you could/can/will be able to construct a C::IO::UDPSocket with a UDPSocket as an argument. If this is some kind of convention we want to establish for wrappers, sure, lets do that instead, but in any case, this PR is one option. It makes the operation very explicit (i.e. I want to wrap this socket).

BTW, this PR does not preclude also wrapping existing sockets.. they are not mutually exclusive.

I guess IMHO it isn't entirely obvious that you could/can/will be able to construct a C::IO::UDPSocket with a UDPSocket as an argument.

Since C::IO::TCPSocket does this, I don't know why C::IO::UDPSocket shouldn't. Probably UDP isn't used that often, so no one noticed that C::IO::TCPSocket provides this while C::IO::UDPSocket doesn't.
C::IO::UDPSocket just does this: https://github.com/celluloid/celluloid-io/blob/master/lib/celluloid/io/udp_socket.rb#L9
Wrapping the TCPServer is a different thing, though - I agree it would be quite magical (though it should probably mirror how the sockets are wrapped).

Wrapping the TCPServer is a different thing, though - I agree it would be quite magical (though it should probably mirror how the sockets are wrapped).

My use case wrapping TCPServer and UDPSocket are the same - handling incoming connections for a server. If you do one it wouldn't make sense not to do the other.

Overloading constructors is okay but it also makes things a bit messy

Then perhaps e.g. Celluloid::IO::TCPSocket.from_ruby(...) ala before was the way to go.
I don't remember exactly why I removed those APIs.

Perhaps because in some cases the constructor was made to handle it?

What should work is to create class methods and let them just call new ?

@ioquatix - I believe you're right, because the only way to implement a factory method like .from_io is ... to pass it to the constructor, anyway (once you do, the factory method becomes superfluous).
So there pretty much has to be a parameter to pass it through - whether that's the first parameter (and using is_a?) or through an optional parameter (maybe cleaner, but the first parameter won't be used).

@e2 well, if we do consider it a wrapper around a single object and don't mind resorting to hax, we could do something like this:
def self.from_io(io)
  obj = allocate
  obj.instance_variable_set(:@socket, io)
  obj
end

Granted that's gross. So is the existing constructor for Celluloid::IO::TCPSocket though shrug

@tarcieri - I had the same idea. Probably wouldn't be a gross if it was part of a "generic" way to wrap shared/reused resources.
Besides that, ::TCPSocket is technically a wrapper anyway. So it's either wrapping the wrapper, or hacking the wrapper or ... a new wrapper (and letting duck typing take care of things).
I used to appreciate strong type safety (C++ background), but I find inheritance hurts in Ruby more often than not.
Celluloid::IO::TCPSocket is basically a stream with a reference to a socket. If a socket is passed to the constructor, the distinction between TCP and UDP stops being important (in terms of API).
So the real "problem" seems to be: how to elegantly create a stream-compatible object given an existing socket/resource. Maybe Stream.from_io would be a better match? (Counter-intuitive considering inheritance, but ...)

That might be a good idea, and if you try to wrap an existing celluloid io socket it's a nop..

Perhaps a fuction Celluloid::IO::from_io(...)

@ioquatix if you had a generic wrapper like that (also, please, Celluloid::IO.from_io, this isn't 2004 :wink:), you'd lose all access to the methods on the subclasses.

Also, I'd prefer what @e2 was suggesting: Celluloid::IO::Stream.from_io(io)

Is a TCPServer or UDPSocket a stream??
Sent from my phone.

On 24/04/2015, at 1:37 pm, Tony Arcieri<EMAIL_ADDRESS>wrote:
Also, I'd prefer what @e2 was suggesting: Celluloid::IO::Stream.from_io(io)
―
Reply to this email directly or view it on GitHub.

No, however, what kind of useful wrapper can Celluloid provide generically for those? They have method protocols specific to their class.

Well, this PR includes them..

You used subclasses, which work because you inherit all of the methods from
the parent classes.
Celluloid::IO.from_io() can't work generically. At best, it could be an
additional layer of complexity on top of something like this PR, but I
don't think that makes sense.
Celluloid::IO::Stream.from_io(), on the other hand, can actually be generic.

--
Tony Arcieri

Your PR is interesting, but probably backwards. The parent class should
probably be the "wrapper" with a simple constructor and all the
functionality, and the subclass should reimplement the constructor with
more complicated Ruby-errata behavior then call super.
--
Tony Arcieri

Forgive me but I don't see how that would work.

Oh, do you mean completely reengineering celluloids socket wrappers?

Yes, move all of the existing functionality to a wrapper class which has a simple initializer that only sets an instance variable, and having the complex, Ruby IO compatible initializer functionality in a subclass.

Hi
I'm running into this issue right now, too. I need a simple way to convert ruby TCPServer/TCPSocket/UDPSocket/... into the corresponding Celluloid::IO classes. Can I help resolving this?

As @tarcieri said, I think that having a top level wrapper class might make sense. However, as proposed, my solution does work fine.

I'm going to close this in favour of the PR given by @hannesg.

:+1:


[QST] TPC-H q3 is slower then gluten

What is your question?
We compare rapids with gluten recently. The performance of rapids is impressive. But we found some of the TPC-H queries are slower then gluten.  With q3 as an example
SELECT
    l_orderkey,
    sum(l_extendedprice * (1 - l_discount)) AS revenue,
    o_orderdate,
    o_shippriority
FROM
    customer,
    orders,
    lineitem
WHERE
    c_mktsegment = 'BUILDING'
    AND c_custkey = o_custkey
    AND l_orderkey = o_orderkey
    AND o_orderdate < date'1995-03-15'
    AND l_shipdate > date'1995-03-15'
GROUP BY
    l_orderkey,
    o_orderdate,
    o_shippriority
ORDER BY
    revenue DESC,
    o_orderdate
LIMIT 10;

duration

rapids
6.167 s

gluten
3.591 s

Is there any suggetion to improve the performance in this case ?
rapids is started as following
./sbin/start-thriftserver.sh \
  --master local \
  --num-executors 1 \
  --conf spark.executor.cores=1 \
  --conf spark.rapids.sql.concurrentGpuTasks=1 \
  --driver-memory 10g \
  --conf spark.eventLog.enabled=true \
  --conf spark.eventLog.dir=/workspace/test/rapids/event_logs \
  --conf spark.rapids.memory.pinnedPool.size=2G \
  --conf spark.sql.files.maxPartitionBytes=512m \
  --conf spark.plugins=com.nvidia.spark.SQLPlugin \
  --conf spark.rapids.sql.enabled=true \
  --conf spark.rapids.sql.explain=ALL

The query visualizations in DOT format are as following

rapids query visualization

gluten query visualization

Part of the issue is that the RAPIDS Accelerator run is hamstrung by only executing one task at a time (only 1 executor with only 1 core), whereas the Gluten run must be doing more in parallel.  Going through the stage task times and summing them up serially, I get around 6 seconds for all of the RAPIDS tasks, matching the wall clock time observed, yet more than 9 seconds for all the Gluten tasks which is almost 3x the observed wall clock time.  That tells me that RAPIDS is executing tasks faster than Gluten, but it's not able to run them as parallel as the Gluten setup and that makes it slower overall.
I would increase the number of executor cores to at least 2 (up to the number of cores being used by the Gluten setup) and also increase the concurrent GPU tasks to 2 (the default) unless you have a clear reason to override that (e.g.: getting a GPU OOM or seeing spills).  Depending on the size if input files and how much CPU memory is available, you may want to increase the pinned memory pool size.

@lgbo-ustc your data is very small. What is the scale factor that you are running at?

119 MiB for customers
552 MiB for orders
2.09 GiB for lineitem

What hardware are you running on? Just curious about your decision to set the memory limits and concurrency that you did.
GPU processing tends to scale sub-linearly. Doubling the data, up until the GPU is fully utilized, tends to not double the run time. So tuning at this point is likely to be in the details.

Gluten/Velox Stage 13 (80 ms) is the same as RAPIDs stage 24 (64 ms) - this is so small we can ignore it for now.
Gluten/Velox Stage 12 (1560 ms) is the same as RAPIDS stage 25 (229ms + 554ms = 783 ms) Even with a concurrent value of 1 RAPIDS is 2x faster than gluten. If we could set the concurrency to 2, it would likely be faster, or if we tuned the max partition bytes we might get it all in a single task with a single batch.
RAPIDS stage 28 is due to AQE starting out doing a shuffled join and then switching to a broadcast join. It looks like gluten was not run with AQE.
Gluten/Velox stage 15 (274 ms MAX) is the same as RAPIDS stage 30 (140 ms + 317 ms = 457 ms) Again concurrency is playing a role here. If you could increase the concurrency if might help.
Gluten/Velox stage 14 (2542 ms MAX) is the same as RAPIDS stage 26 (490 ms AVG * 7 tasks =  3,430 ms) Here RAPIDS had 7 tasks, but gluten only had 3. If we could set the max partition bytes a little larger, and the batch size larger too it would likely speed things up a lot.
The last stage is hard to tell because TakeOrderedAndProjectExecTransformer made it so that most of the processing time for that stage is lost. It plays some games internally with a shuffle that is not counted which can cause this.

In general if you have the hardware to do it I would suggest you follow our tuning guide.
Have a concurrency of at least 2.
Have CPU cores that are probably about 2+ the concurrency, so we can overlap I/O and computation.
Set max partition bytes larger

Thanks very much. We also found that there is not enough concurrency to process the tasks by timeline. After making it the same as gluten, the end to end duration is abount 1.3s now.

Thanks for the update!  Looks like things are running properly now.


Change Fav Icons and Check Manifest File

Currently the page shows standard favicon from parcel, change it to website designed

Solved by #38
Closing now


Implement bindings for msdfgen-core for generating MSDF sprites at runtime

This PR aims to add support for the excellent msdfgen library, which allows the generation of (M)SDF glyph sprites at runtime using an easy-to-use interface.
It includes a hand-written API wrapper to allow the JVM to interact with the library's C++ API.
I'm making this a draft PR for now since i want some feedback and i still want to add documentation to the bindings once i'm adding it to the C-API.
For anyone wanting to test the bindings themselves, you can download the latest builds here until they're available.
Cheers.

I consider my C-API done so this would be ready for review @Spasi, regardless whether the msdfgen-core PR gets merged or not :)

Okay found a little issue on macOS/aarch64 while building different platforms. Need to build the binding module as C++ as it seems.

Tested linux-x64, macos-arm64 and macos-x64.

Spotted an issue, fixed by defining handle types using the handle extension. My bad.

If you need any additional maintainers by the way, let me know. Would be a pleasure :)

I am adding some more bindings to their extension API. This would allow directly loading glyph shapes from font files using FreeType. How would you like this to work in the best case @Spasi? Is there a way to statically link a LWJGL module against a native library?

The best case for me would be to avoid the dependency entirely. Freetype is a pita to build properly, because of the interdependency with HarfBuzz. Statically linking it would also mean a bigger binary.
Ideally, LWJGL users would be able to use the existing Freetype bindings for this. The msdfgen module would call whatever it needs to call at runtime, assuming both modules are available.

The best case for me would be to avoid the dependency entirely. Freetype is a pita to build properly, because of the interdependency with HarfBuzz. Statically linking it would also mean a bigger binary.
Ideally, LWJGL users would be able to use the existing Freetype bindings for this. The msdfgen module would call whatever it needs to call at runtime, assuming both modules are available.

That's also why i was asking in the first place. FT is a pain to deal with. Is there a way i can just depend on the lwjgl-freetype natives somehow?

Hard to say, it would likely involve platform-specific complexities. Isn't the extension API simple enough that it'd be easier to port it to Java/LWJGL?

Hard to say, it would likely involve platform-specific complexities. Isn't the extension API simple enough that it'd be easier to port it to Java/LWJGL?

It's quite a bit of code, so i just wanted to make sure if there's an easy way. But in this case, i'll still do it. I'll port the font importer to Java and include it in the binding sources. I can include some utils for blitting MSDF bitmaps to BufferedImages too while i'm at it.

I will test the implementation in my current project now and let you know if i'm done with the bindings so you can start an actual review if you want @Spasi :)

I removed the utils again because i think it's not really worth the dependency on java.desktop for BufferedImage.

@Spasi Small update: making good progress, i'd say the API is pretty much feature complete now for normal use. However, i still want to add the FreeType interop back in. I am currently rewriting a part of msdfgen-core to allow it to use FreeType interop without having to link against it so i can integrate it with lwjgl-freetype on the JVM side. The FreeType related calls within msdfgen will be made using function pointers.

Proof of concept works for me. Gonna add Windows support and integrate it into LWJGL.

I'm quite happy with this design. You can easily plug LWJGL FreeType into LWJGL msdfgen now @ runtime with minimal glue code. Let me know what you think @Spasi

Tested latest changes on windows-x64, linux-x64, macos-x64 and macos-arm64. Looks good to me. I'm done with this from my end @Spasi ^^

The C-API is now part of my permanent msdfgen fork, since the author is not interested in merging it.
You can find my new repository here.

Do you want me to update this to master or can i just leave it until it is merged? ^^

No worries, I'll rebase it and resolve any conflicts when I merge it (soon, I promise!).

No worries, I'll rebase it and resolve any conflicts when I merge it (soon, I promise!).

No hurries, didn't wanna come off as pushy, but there's projects where this is expected from the PR author ^^
Thank you very much.

Hey @KitsuneAlex,
I just pushed the msdfgen branch. It's this PR but with everything squashed to a single commit and rebased to current head. I did the following changes:

Removed all Unsafe modifiers, replaced with Check where applicable. The unsafe modifier on a struct type makes the generator assume that it's an array of structs of unknown length. This made such parameters have a type of MSDF<Type>.Buffer instead of just MSDF<Type>.
Split msdfgen-ext to a separate class.
Added the FontCoordinateScaling parameter of msdf_ft_font_load_glyph.
Added sample code (org.lwjgl.demo.util.msdfgen.HelloMSDFGen).
Some minor cleanup/fixes.

Please review and let me know if it's ready to merge. I will force-push the branch to this PR, so if you'd like to keep the commit history, make sure you have a copy of it.

Hey @KitsuneAlex,
I just pushed the msdfgen branch. It's this PR but with everything squashed to a single commit and rebased to current head. I did the following changes:

Removed all Unsafe modifiers, replaced with Check where applicable. The unsafe modifier on a struct type makes the generator assume that it's an array of structs of unknown length. This made such parameters have a type of MSDF<Type>.Buffer instead of just MSDF<Type>.
Split msdfgen-ext to a separate class.
Added the FontCoordinateScaling parameter of msdf_ft_font_load_glyph.
Added sample code (org.lwjgl.demo.util.msdfgen.HelloMSDFGen).
Some minor cleanup/fixes.

Please review and let me know if it's ready to merge. I will force-push the branch to this PR, so if you'd like to keep the commit history, make sure you have a copy of it.

Will check it out in a moment, thank you so much <3

@Spasi Definitly approved, looks very good to me :)

Thank you @KitsuneAlex!

Was a pleasure! :)

It seems like this binding missed a critical method, see: https://github.com/Chlumsky/msdfgen/issues/105
This makes it unusable for advanced text rendering, unless I missed something.
If I did not miss something, could the bindings be updated or should I make a dedicated issue for it?

@Desoroxxx See this example. This shouldn't cause you any issues. If it actually does, let me know and i'll update the bindings :)

@Desoroxxx See this example. This shouldn't cause you any issues. If it actually does, let me know and i'll update the bindings :)

My issue is when using the binding with Harfbuzz, I need to render more than unicode glyphs

OH, now i understand what you mean :) I will write a patch the following days i've got off work ^^


Texture sizes are 10x bigger in iOS builds from 6000.0.24f1 vs 2023.2.20f1

Describe the bug 💬
This project exported and ran fine in Unity 2023.2.20f1 on iOS running on an iPad Pro - when I updated it to Unity 6000.0.23f1 and also 6000.0.24f1, I noticed the allocated size of textures in the build in the memory profiler are nearly 10x the size of the textures in the build from Unity 2023.2.20f1.
I have cross checked this doesn't happen with textures linked to obj, dae or fbx files imported into Unity and this only is happening with .glb files.
I have a small repro project here using the DamagetHelmet.glb example file from the Khronos GLTF sample models repo where I opened it in Unity 2023.2.20f1, built to test then opened it in Unity 6000.0.24f1 without changing anything built and tested it to cross reference this - See size differences of the DamagedHelmet.glb textures.
Unity 2023.2.20f1

Unity 6000.0.24f1 LTS

Steps to reproduce 🔢

Download the attached project from the repro files below, open in Unity 2020 as build target iOS on Silicon Mac Editor (not intel)
Build and run it on iOS to a device like an ipad Pro as development build with auto link profiler on
In Memory Profiler, grab a memory snapshot of the running build
Repeat the steps above with Unity 6000.0.24f1 as build target iOS on Silicon Mac Editor (not intel)
Compare the memory snapshots

Files to reproduce the issue ♻
MemoryRepro.zip
Editor Version 🎲
6000.0
Render Pipeline and version
URP 16.0.6
UnityGLTF Version
2.14.0 & 2.14.1 tested
Operating System 👩💻
macOS, iOS
When does this problem happen?

[ ] Editor Import
[ ] Runtime Import
[ ] Editor Export
[X] Runtime Export

Additional Info 📜
No response
Validations 🩹

[X] I have searched existing issues: no issue already exist that reports the same problem.
[X] I follow the Code of Conduct
[X] I provided a minimal reproducible example, including files when necessary.

Thanks for the detailled information! Just to be clear, is this the bug you also sent to Unity about this change of behaviour? Could you reference the issue number here?

It is the same issue I sent to Unity although I sent them a larger bug repro project than the one linked here, I will follow up my bug report with the same zip linked here if required.
The Unity issue is
IN-87705

I haven't managed to reproduce this on Windows build platform target so I would assume this is specific to iOS for now.

Still happens in Unity 6000.0.27f1 on iOS, the bug report with Unity at IN-87705 is still under review as well but Unity support has been especially slow for me the past 5 months so far so I'm not holding out hope of a response from them.

I have good news, Unity have acknowledged this bug today and it has been tasked by them internally. I'll close this bug report when they have fixed it.
Your bug report Texture2D memory allocation size is significantly increased when running on iOS device has been confirmed and transferred to the appropriate internal development team at Unity. Your bug report has the following internal ID: UUM-88991


Add CLI options for preopened listen sockets

As a follow up for https://github.com/bytecodealliance/wasmtime/pull/3711, this implements CLI options to insert pre-opened sockets.
--listenfd : Inherit environment variables and file descriptors following the systemd listen fd specification (UNIX only)
--tcplisten <SOCKET ADDRESS>: Grant access to the given TCP listen socket
TODO

[ ] Write test cases

rebased

add mio for wasi example

This looks like it will be a good way to enable experimentation with the new WASI accept functionality.
Looking forward, the convention of having applications implicitly assume they can get environment variables like LISTEN_FDS is problematic for WASI. To make WASI programs modular and statically analyzable, we want to make API contracts explicit in imports and exports, rather than in dynamic environment-variable conventions. I expect what we'll want in the future is for this to use the Typed Main feature, and then to have WASI libc on the inside translate that back into making getenv("LISTEN_FDS") return this information for compatibility.
However, we can address that as the pieces needed to use Typed Main come online. For now, this looks good.


⚠ ClamAV has degraded performance

In d386b92, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 172 ms

Resolved: ClamAV performance has improved in 969e62c.


[Platform][Refactor] Extract func get_default_attn_backend to Platform

Extrct func get_default_attn_backend to Platform and implement it on different backends.
Part of #9268

 PR Checklist (Click to Expand)
Thank you for your contribution to vLLM! Before submitting the pull request, please ensure the PR meets the following criteria. This helps vLLM maintain the code quality and improve the efficiency of the review process.
PR Title and Classification
Only specific types of PRs will be reviewed. The PR title is prefixed appropriately to indicate the type of change. Please use one of the following:

[Bugfix] for bug fixes.
[CI/Build] for build or continuous integration improvements.
[Doc] for documentation fixes and improvements.
[Model] for adding a new model or improving an existing model. Model name should appear in the title.
[Frontend] For changes on the vLLM frontend (e.g., OpenAI API server, LLM class, etc.)
[Kernel] for changes affecting CUDA kernels or other compute kernels.
[Core] for changes in the core vLLM logic (e.g., LLMEngine, AsyncLLMEngine, Scheduler, etc.)
[Hardware][Vendor] for hardware-specific changes. Vendor name should appear in the prefix (e.g., [Hardware][AMD]).
[Misc] for PRs that do not fit the above categories. Please use this sparingly.

Note: If the PR spans more than one category, please include all relevant prefixes.
Code Quality
The PR need to meet the following code quality standards:

We adhere to Google Python style guide and Google C++ style guide.
Pass all linter checks. Please use format.sh to format your code.
The code need to be well-documented to ensure future contributors can easily understand the code.
Include sufficient tests to ensure the project to stay correct and robust. This includes both unit tests and integration tests.
Please add documentation to docs/source/ if the PR modifies the user-facing behaviors of vLLM. It helps vLLM user understand and utilize the new features or changes.

Adding or changing kernels
Each custom kernel needs a schema and one or more implementations to be registered with PyTorch.

Make sure custom ops are registered following PyTorch guidelines: Custom C++ and CUDA Operators and The Custom Operators Manual
Custom operations that return Tensors require meta-functions. Meta-functions should be implemented and registered in python so that dynamic dims can be handled automatically. See above documents for a description of meta-functions.
Use torch.libary.opcheck() to test the function registration and meta-function for any registered ops.  See tests/kernels for examples.
When changing the C++ signature of an existing op, the schema must be updated to reflect the changes.
If a new custom type is needed, see the following document: Custom Class Support in PT2.

Notes for Large Changes
Please keep the changes as concise as possible. For major architectural changes (>500 LOC excluding kernel/data/config/test), we would expect a GitHub issue (RFC) discussing the technical design and justification. Otherwise, we will tag it with rfc-required and might not go through the PR.
What to Expect for the Reviews
The goal of the vLLM team is to be a transparent reviewing machine. We would like to make the review process transparent and efficient and make sure no contributor feel confused or frustrated. However, the vLLM team is small, so we need to prioritize some PRs over others. Here is what you can expect from the review process:

 After the PR is submitted, the PR will be assigned to a reviewer. Every reviewer will pick up the PRs based on their expertise and availability.
 After the PR is assigned, the reviewer will provide status update every 2-3 days. If the PR is not reviewed within 7 days, please feel free to ping the reviewer or the vLLM team.
 After the review, the reviewer will put an  action-required label on the PR if there are changes required. The contributor should address the comments and ping the reviewer to re-review the PR.
 Please respond to all comments within a reasonable time frame. If a comment isn't clear or you disagree with a suggestion, feel free to ask for clarification or discuss the suggestion.

Thank You
 Finally, thank you for taking the time to read these guidelines and for your interest in contributing to vLLM. Your contributions make vLLM a great tool for everyone!

PTAL at the failing kernels tests.

PTAL at the failing kernels tests. You can ignore the HF connection errors.

Well, when getting the default attention backend via the current_platform runtime instance, we can no longer mock different backends via mock vllm.attention.selector.current_platform.is_cpu. I will take a look at how to change the test cases to adapt to the current changes.

maybe you can directly mock which_attn_to_use

maybe you can directly mock which_attn_to_use

Won't this invalidate the test? I mean this might skip the actual execution of the test.

Won't this invalidate the test?

good point.
maybe:
if device == "cpu":
    from vllm.platforns.cpu import CpuPlatform
    with patch("vllm.platforms.current_platform", CpuPlatform()):

if device == "cpu":
    from vllm.platforns.cpu import CpuPlatform
    with patch("vllm.platforms.current_platform", CpuPlatform()):

Thanks! Mocking current_platform works, but with a slight change, i.e. we need to mock vllm.attention.selector.current_platform

CI failed because VllmConfig was not set before calling CustomOp. I'll fix this in the next commit.

I fixed the UTs in tests/kernels/test_layernorm.py, tests/kernels/test_activation.py, tests/kernels/test_pos_encoding.py and tests/kernels/test_rotary_embedding.py

However, I have some trouble in triton now. Thus, I didn't fix tests/kernels/test_moe.py and tests/kernels/test_awq_marlin.py

@youkaichao  Could you help fix the remaining UTs in tests/kernels/test_moe.py and tests/kernels/test_awq_marlin.py ?

@MengqingCao sorry for the trouble. these errors should be fixed by https://github.com/vllm-project/vllm/pull/10431 . please merge main to fix the test error. and you can revert the changes to tests/kernels/test_rotary_embedding.py etc.

@MengqingCao sorry for the trouble. these errors should be fixed by #10431 . please merge main to fix the test error. and you can revert the changes to tests/kernels/test_rotary_embedding.py etc.

Thanks, got it


Customer gets the shipping address assigned instead of the billing address

Q
A

Bug?
yes

New Feature?
no

Version
2.0

Actual Behavior
after the order is exported, the customer has the shipping address assigned instead of the billing address
Expected Behavior
the billing address is assigned

fixed in #163


Cannot resolve symbol 'R'

Stack trace: https://pastebin.com/3qt9VK7p
Every import with R at the end of it (import androidx.appcompat.R; or import androidx.fragment.R;) doesn't work (Cannot resolve symbol 'R').

@Michalixx Try cleaning gradle and build again. This doesn't seem to be an issue with package, could be related to android studio or gradle cache.


reworked asset reference hitbox for better adjustability

I ran into assets where the visible object extended beyond the mesh.

I pushed a commit with your changes and added a way to offset right/forward directions too.
The code that got removed basically anchored stuff to the position of the mesh instead of bounds center. I dont remember why I did that tbh, it might be fine.


Write spec for AcademicSummary.js

We're doing some nontrivial computation here so better check that it's correct.

Hi Eli,
By spec do you mean test? if so I'd like to take a stab at it - maybe we can do it together? I've wanted to start writing JS tests. I have a good background in writing Rails RSpec tests, so hopefully some of those skills translate over :)

Yep, these are JS tests with a framework called Jasmine. Sure, I'm always down to pair program!
For a reference right now, you can look at spec/javascripts/student_profile/student_profile_header_spec.js for a simple example.

👍 👍 👍

Found out that this is from and old PR 👍


Missing carrierwave error

Not all projects use Carrierwave. This change ensure those that don't can still use sprig-reap. Fixes #15 . There were also a couple of tests failing due to quoting issues, those are fixed in the second commit.

@bramswenson - Carrierwave fix looks good, but adding quotes to the yaml fixtures looks to have broken tests rather than fixed.  The tests were passing before on Travis CI, so I'm curious as to what you were seeing in terms of test failures without those quotes.

I bet it is a ruby version thing. I'm using one of the latest no doubt.
I'll check later and report back. I'm sure you know, but you can add a ruby
version matrix to .travis to test more rubies.
B!
On Mon, Jan 26, 2015 at 9:26 AM, Ryan Stenberg<EMAIL_ADDRESS>wrote:

@bramswenson https://github.com/bramswenson - Carrierwave fix looks
good, but adding quotes to the yaml fixtures looks to have broken tests
rather than fixed. The tests were passing before on Travis CI, so I'm
curious as to what you were seeing in terms of test failures without those
quotes.
—
Reply to this email directly or view it on GitHub
https://github.com/vigetlabs/sprig-reap/pull/16#issuecomment-71467764.

Yep, I was using 2.1.2. Using 1.9.3 my changes fail as on travis. I'll revert that commit to get travis passing again. Thanks.

I'll look into newer versions of Ruby -- thanks for the heads up and the PR!

No problem, added #17 to track that issue as well. Enjoy.


Performance Issue with Custom Styling on Focused TouchableOpacity in React Native TV

Description
I am experiencing a performance issue in my React Native TV application. When using TouchableOpacity for buttons, the default behavior of reducing opacity when a button is focused slows down the interface. I attempted to apply custom styling to focused buttons instead, but this resulted in significantly slower performance.
here below i my code
const YourComponent = ({ headers, item, channelPrograms, renderCol1, handlePress }) => {
const [focusedItem, setFocusedItem] = useState(null);
return (

{renderCol1(item.col1)}
{headers.map((headerItem, index) => {
const program = channelPrograms.find(program => program.time === headerItem);
const cellKey = ${item.key}-${index};
const isFocused = focusedItem === cellKey;
    return (
      <TouchableOpacity
        key={index}
        activeOpacity={1}
        onPress={() => handlePress(program ? program : { message: 'No Program Found' })}
        onFocus={() => setFocusedItem(cellKey)}
        onBlur={() => setFocusedItem(null)}
        style={[styles.cell, isFocused && styles.focusedItem]}>
        <Text style={styles.textcel1}>
          {program ? program.title : 'No Program Found'}
        </Text>
      </TouchableOpacity>
    );
  })}
</View>

);
};
Steps to reproduce
Create a button using TouchableOpacity.
Apply custom styling to the button when it is focused using the onFocus and onBlur events.
Navigate through the buttons to observe the performance.
Expected Behavior:
The buttons should smoothly change their style without causing a slowdown in the interface.
Actual Behavior:
When navigating through the buttons, the interface becomes noticeably slow, impacting the user experience.
React Native Version
0.73.6-1
Affected Platforms
Runtime - Android
Output of npx react-native info
System:
  OS: Windows 11 10.0.22631
  CPU: "(6) x64 AMD Ryzen 5 4500U with Radeon Graphics         "
  Memory: 1.05 GB / 15.40 GB
Binaries:
  Node:
    version: 18.19.0
    path: C:\Program Files\nodejs\node.EXE
  Yarn:
    version: 1.22.19
    path: ~\AppData\Roaming\npm\yarn.CMD
  npm:
    version: 8.19.3
    path: C:\Program Files\nodejs\npm.CMD
  Watchman: Not Found
SDKs:
  Android SDK:
    Android NDK: 22.1.7171670
  Windows SDK:
    AllowDevelopmentWithoutDevLicense: Enabled
    Versions:
      - 10.0.22621.0
IDEs:
  Android Studio: Not Found
  Visual Studio:
    - 17.8.34408.163 (Visual Studio Community 2022)
Languages:
  Java:
    version: 17.0.10
    path: C:\Program Files\Common Files\Oracle\Java\javapath\javac.EXE
  Ruby: Not Found
npmPackages:
  "@react-native-community/cli": Not Found
  react:
    installed: 18.2.0
    wanted: 18.2.0
  react-native: Not Found
  react-native-tvos:
    installed: 0.73.6-1
  react-native-windows: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: false
iOS:
  hermesEnabled: Not found
  newArchEnabled: Not found

info React Native v0.74.3 is now available (your project is running on v0.73.6-1).
info Changelog: https://github.com/facebook/react-native/releases/tag/v0.74.3
info Diff: https://react-native-community.github.io/upgrade-helper/?from=0.74.3
info For more info, check out "https://reactnative.dev/docs/upgrading?os=windows".

Stacktrace or Logs
const YourComponent = ({ headers, item, channelPrograms, renderCol1, handlePress }) => {
  const [focusedItem, setFocusedItem] = useState(null);

  return (
    <View style={styles.rowContainer}>
      <View style={styles.cell}>{renderCol1(item.col1)}</View>
      {headers.map((headerItem, index) => {
        const program = channelPrograms.find(program => program.time === headerItem);
        const cellKey = `${item.key}-${index}`;
        const isFocused = focusedItem === cellKey;

        return (
          <TouchableOpacity
            key={index}
            activeOpacity={1}
            onPress={() => handlePress(program ? program : { message: 'No Program Found' })}
            onFocus={() => setFocusedItem(cellKey)}
            onBlur={() => setFocusedItem(null)}
            style={[styles.cell, isFocused && styles.focusedItem]}>
            <Text style={styles.textcel1}>
              {program ? program.title : 'No Program Found'}
            </Text>
          </TouchableOpacity>
        );
      })}
    </View>
  );
};

Reproducer
https://github.com/react-native-community/discussions-and-proposals
Screenshots and Videos
const YourComponent = ({ headers, item, channelPrograms, renderCol1, handlePress }) => {
const [focusedItem, setFocusedItem] = useState(null);
return (

{renderCol1(item.col1)}
{headers.map((headerItem, index) => {
const program = channelPrograms.find(program => program.time === headerItem);
const cellKey = ${item.key}-${index};
const isFocused = focusedItem === cellKey;
    return (
      <TouchableOpacity
        key={index}
        activeOpacity={1}
        onPress={() => handlePress(program ? program : { message: 'No Program Found' })}
        onFocus={() => setFocusedItem(cellKey)}
        onBlur={() => setFocusedItem(null)}
        style={[styles.cell, isFocused && styles.focusedItem]}>
        <Text style={styles.textcel1}>
          {program ? program.title : 'No Program Found'}
        </Text>
      </TouchableOpacity>
    );
  })}
</View>

);
};

If you want to apply styles based on focus, and do not need the opacity to change, I would recommend using Pressable instead. Both the style and children props can be functions that take "pressed" and "focused" as parameters. This way there is no need for a state like focusedItem, which will cause your entire list of items to be rerendered.
function MyButton() {
  return <Pressable
      style={({ pressed, focused }) =>
        pressed || focused ? styles.pressableFocused : styles.pressable
      }
    >
      {({ focused }) => {
        return (
          <Text style={styles.pressableText}>
            {focused ? 'Focused button' : 'Non-focused button'}
          </Text>
        );
      }}
    </Pressable>;
}

Thanks @douglowder


Join the team 🚀

We're hiring at Infracost! 🚀
We have two key roles open: Customer Success Engineer and Software Engineer (Customer Success).
Your role will be vital in helping our customers during proof-of-concepts, onboarding, deployment, and configuration of our platform. If you're technically skilled and are passionate about customer success, we'd like to hear from you.
Check out the roles and apply here:
https://infracost.io/join-the-team
If you have any questions about the role, or want to chat, please reach out to me at<EMAIL_ADDRESS>

do you guys have an active job? I would be delighted to work with you all. =)

@varshneydevansh thanks, unfortunately we are no longer hiring for these positions.


Update create-the-project.md

@kevinoid i got a few more here.

Thanks again @Rick-Anderson.  For reference, I see 17 remaining:
$ grep -r LinkID=389434 aspnet/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms
aspnet/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/membership-and-administration.md:> This tutorial series will teach you the basics of building an ASP.NET Web Forms application using ASP.NET 4.5 and Microsoft Visual Studio Express 2013 for Web. A Visual Studio 2013 [project with C# source code](https://go.microsoft.com/fwlink/?LinkID=389434&clcid=0x409) is available to accompany this tutorial series.
aspnet/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/create-the-project.md:> This tutorial series will teach you the basics of building an ASP.NET Web Forms application using ASP.NET 4.5 and Microsoft Visual Studio Express 2013 for Web. A Visual Studio 2013 [project with C# source code](https://go.microsoft.com/fwlink/?LinkID=389434&clcid=0x409) is available to accompany this tutorial series.
aspnet/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/url-routing.md:[Download Wingtip Toys Sample Project (C#)](https://go.microsoft.com/fwlink/?LinkID=389434&clcid=0x409) or [Download E-book (PDF)](https://download.microsoft.com/download/0/F/B/0FBFAA46-2BFD-478F-8E56-7BF3C672DF9D/Getting%20Started%20with%20ASP.NET%204.5%20Web%20Forms%20and%20Visual%20Studio%202013.pdf)
aspnet/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/url-routing.md:> This tutorial series will teach you the basics of building an ASP.NET Web Forms application using ASP.NET 4.5 and Microsoft Visual Studio Express 2013 for Web. A Visual Studio 2013 [project with C# source code](https://go.microsoft.com/fwlink/?LinkID=389434&clcid=0x409) is available to accompany this tutorial series.
aspnet/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/aspnet-error-handling.md:[Download Wingtip Toys Sample Project (C#)](https://go.microsoft.com/fwlink/?LinkID=389434&clcid=0x409) or [Download E-book (PDF)](https://download.microsoft.com/download/0/F/B/0FBFAA46-2BFD-478F-8E56-7BF3C672DF9D/Getting%20Started%20with%20ASP.NET%204.5%20Web%20Forms%20and%20Visual%20Studio%202013.pdf)
aspnet/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/aspnet-error-handling.md:> This tutorial series will teach you the basics of building an ASP.NET Web Forms application using ASP.NET 4.5 and Microsoft Visual Studio Express 2013 for Web. A Visual Studio 2013 [project with C# source code](https://go.microsoft.com/fwlink/?LinkID=389434&clcid=0x409) is available to accompany this tutorial series.
aspnet/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/checkout-and-payment-with-paypal.md:[Download Wingtip Toys Sample Project (C#)](https://go.microsoft.com/fwlink/?LinkID=389434&clcid=0x409) or [Download E-book (PDF)](https://download.microsoft.com/download/0/F/B/0FBFAA46-2BFD-478F-8E56-7BF3C672DF9D/Getting%20Started%20with%20ASP.NET%204.5%20Web%20Forms%20and%20Visual%20Studio%202013.pdf)
aspnet/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/checkout-and-payment-with-paypal.md:> This tutorial series will teach you the basics of building an ASP.NET Web Forms application using ASP.NET 4.5 and Microsoft Visual Studio Express 2013 for Web. A Visual Studio 2013 [project with C# source code](https://go.microsoft.com/fwlink/?LinkID=389434&clcid=0x409) is available to accompany this tutorial series.
aspnet/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/ui_and_navigation.md:[Download Wingtip Toys Sample Project (C#)](https://go.microsoft.com/fwlink/?LinkID=389434&clcid=0x409) or [Download E-book (PDF)](https://download.microsoft.com/download/0/F/B/0FBFAA46-2BFD-478F-8E56-7BF3C672DF9D/Getting%20Started%20with%20ASP.NET%204.5%20Web%20Forms%20and%20Visual%20Studio%202013.pdf)
aspnet/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/ui_and_navigation.md:> This tutorial series will teach you the basics of building an ASP.NET Web Forms application using ASP.NET 4.5 and Microsoft Visual Studio Express 2013 for Web. A Visual Studio 2013 [project with C# source code](https://go.microsoft.com/fwlink/?LinkID=389434&clcid=0x409) is available to accompany this tutorial series.
aspnet/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/ui_and_navigation.md:[Getting Started with ASP.NET 4.5 Web Forms and Visual Studio 2013 - Wingtip Toys](https://go.microsoft.com/fwlink/?LinkID=389434&clcid=0x409) (C#)
aspnet/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/create_the_data_access_layer.md:> This tutorial series will teach you the basics of building an ASP.NET Web Forms application using ASP.NET 4.5 and Microsoft Visual Studio Express 2013 for Web. A Visual Studio 2013 [project with C# source code](https://go.microsoft.com/fwlink/?LinkID=389434&clcid=0x409) is available to accompany this tutorial series.
aspnet/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/introduction-and-overview.md:[Getting Started with ASP.NET 4.5 Web Forms and Visual Studio 2013 - Wingtip Toys](https://go.microsoft.com/fwlink/?LinkID=389434&clcid=0x409) (C#)
aspnet/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/introduction-and-overview.md:For questions and comments, use the Q and A section included on the [Getting Started with ASP.NET 4.5 Web Forms and Visual Studio 2013 - Wingtip Toys](https://go.microsoft.com/fwlink/?LinkID=389434&clcid=0x409) (C#) sample page.
aspnet/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/introduction-and-overview.md:If an error occurs, the corresponding error messages could be confusing, with no good explanation on how to fix it. For help, you can check the [ASP.NET forums](https://forums.asp.net/). Another good source is the Q and A section in the [Getting Started with ASP.NET 4.5 Web Forms and Visual Studio 2013 - Wingtip Toys](https://go.microsoft.com/fwlink/?LinkID=389434&clcid=0x409) (C#) sample page.
aspnet/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/shopping-cart.md:[Download Wingtip Toys Sample Project (C#)](https://go.microsoft.com/fwlink/?LinkID=389434&clcid=0x409) or [Download E-book (PDF)](https://download.microsoft.com/download/0/F/B/0FBFAA46-2BFD-478F-8E56-7BF3C672DF9D/Getting%20Started%20with%20ASP.NET%204.5%20Web%20Forms%20and%20Visual%20Studio%202013.pdf)
aspnet/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/shopping-cart.md:> This tutorial series will teach you the basics of building an ASP.NET Web Forms application using ASP.NET 4.5 and Microsoft Visual Studio Express 2013 for Web. A Visual Studio 2013 [project with C# source code](https://go.microsoft.com/fwlink/?LinkID=389434&clcid=0x409) is available to accompany this tutorial series.


create compressed build files and dev copies

would allow people to jump in and build more rapidly when working w/ some of the elements more directly tied to HAXCMS itself


Event Indexing Issue causing UNIQUE constraint violation in Firefly Core

Summary:
An issue has been identified in the interaction between the Firefly-fabconnect and Firefly Core services. Firefly-fabconnect is not correctly populating the transactionIndex and eventIndex for events within a single block, causing a UNIQUE constraint violation in the Firefly Core events table.
Details:
Firefly Core has a UNIQUE constraint on a set of fields for its events table. Each event processed by Firefly Core should have a unique combination of these fields to avoid conflicts. Firefly-fabconnect is responsible for generating and assigning unique transactionIndex and eventIndex values for each event in a block. However, it has been observed that Firefly-fabconnect is not correctly populating these indices.
Event creation logic in fabconnect:
internal/events/subscription.go:133

event := &eventsapi.EventEntry{
	ChaincodeId:   ccEvent.ChaincodeID,
	BlockNumber:   ccEvent.BlockNumber,
	TransactionId: ccEvent.TxID,
	EventName:     ccEvent.EventName,
	Payload:       ccEvent.Payload,
}

Debugger inspector representation of the event in fabconnect:
event = {*api.EventEntry | 0x1400001b6c0}
 ChaincodeId = {string} "token-erc-721-v1"
 BlockNumber = {uint64} 81
 TransactionId = {string} "421b2cb8ce1bcc1332712572b63124e5a1fa70e32eb48626703a56f39ec94059"
 TransactionIndex = {int} 0
 EventIndex = {int} 0
 EventName = {string} "TokenMinted"
 Payload = {interface{} | []uint8} len:278, cap:288
 Timestamp = {int64}<PHONE_NUMBER>739164000
 SubID = {string} ""

What is received in Firefly Core:
messages = {[]interface{}} len:2, cap:2
 0 = {interface{} | map[string]interface{}}
  0 = transactionIndex -> 0
  1 = timestamp -><PHONE_NUMBER>804696000
  2 = chaincodeId -> token-erc-721-v1
  3 = blockNumber -> 80
  4 = transactionId -> cfdf3b5bf26014af280ad88d223db65f4efbe59e92f41263ca5006995a9078d1
  5 = eventIndex -> 0
  6 = eventName -> TokenMinted
  7 = payload -> eyJ0byI6Ing1MDk6OkNOPWNyZWF0b3IsT1U9Y2xpZW50OjpDTj1mYWJyaWNfY2Eub3JnMS5leGFtcGxlLmNvbSxPVT1IeXBlcmxl
  8 = subId -> sb-c85b1648-8020-4c68-61fb-cb2f26856e93
 1 = {interface{} | map[string]interface{}}
  0 = chaincodeId -> token-erc-721-v1
  1 = blockNumber -> 80
  2 = transactionId -> 638aaa7b5ee53edcd104e98f84b4d8c3fb7a311bb90525f0144ac7cda92ea891
  3 = eventIndex -> 0
  4 = eventName -> TokenMinted
  5 = timestamp -><PHONE_NUMBER>804696000
  6 = subId -> sb-c85b1648-8020-4c68-61fb-cb2f26856e93
  7 = transactionIndex -> 0
  8 = payload -> eyJ0byI6Ing1MDk6OkNOPWNyZWF0b3IsT1U9Y2xpZW50OjpDTj1mYWJyaWNfY2Eub3JnMS5leGFtcGxlLmNvbSxPVT1IeXBlcmxl

The error that is thrown:
[2023-05-16T11:09:31.707+03:00] ERROR SQL insert failed: UNIQUE constraint failed: blockchainevents.namespace, blockchainevents.listener_id, blockchainevents.protocol_id sql=[ INSERT INTO blockchainevents (id,source,namespace,name,protocol_id,listener_id,output,info,timestamp,tx_type,tx_id,tx_blockchain_id) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12) ]: UNIQUE constraint failed: blockchainevents.namespace, blockchainevents.listener_id, blockchainevents.protocol_id dbtx=KzK541m0 ns=default pid=48305 role=event-manager
Impact:
This issue is preventing Firefly Core from processing multiple events of the same type within a single block. This could potentially lead to loss of data or incomplete data processing, impacting the overall functionality and data integrity of the system.
Recommended Actions:
The root cause of the issue appears to be with Firefly-fabconnect's event indexing. It is recommended to investigate why Firefly-fabconnect is not correctly populating transactionIndex and eventIndex for each event within a block. Once identified, a fix should be implemented to ensure that each event in a block is assigned a unique pair of indexes. This will allow Firefly Core to process and insert all events correctly without violating the UNIQUE constraint on its events table.

I've identified the sporadic place where this issue occurs.
The processNewEvents method digests the events from two possible streams:

when a new blocks arrives
when a chaincode event gets emitted

Inside the chaincode event stream, when assembling the event model here the TransactionIndex and EventIndex fields are missing because by the protobuf spec, these fields don't get emitted. One possible solution would be to fetch the particular block, parse it and find the event and transaction where the ccEvent belongs.
We tried a different approach, to force the blockEventNotifier stream (by commenting out the first if block, leaving only the block notifier stream) and it works.
We ran a load test for Transfer and with a 6-15 tx/block count, everything went successful both on Fabconnect and Firefly.
One question arises, is that a valid approach? Can we "force" the block notifier with some configuration? What are the information that we're losing by removing the chaincode events stream?
cc: @jurosm


refactor(fee): moving calculate_tx_gas_usage_vector to ActualCo…

…stBuilder

This change is

Except for removing a TODO and changing calculate_tx_gas_usage_vector to ActualCostBuilder::calculate_tx_gas_usage_vector. (and maybe some use changes to match the new location but I don't remember).


Timeout support

Zero timeouts are currently configured.  This library uses httprb and adding this ability would be very easy.
https://github.com/httprb/http/wiki/Timeouts

Would be addressed by: https://github.com/api-ai/api-ai-ruby/pull/9/files

Thank you, new version released.


Auto booking feature not working its showing slots availability of today which are already booked

Please share the screenshot or logs.

you have to type - "yes-please" , not just yes

Can we have preference for slot 3 or 4 because slot 1 gets booked quickly

I will try to add that option

slot selection has been randomized. It will still try for the first center and date - sorted ascending


Change term - https://dwc.tdwg.org/pw/#dwcpw_p045

Change term

Submitter: John Wieczorek
Justification (why is this change necessary?): grammatical error
Proponents (who needs this change): Everyone

Proposed new attributes of the term:
Change 'their' to 'there' in

Definition of the term: Organisms transported and released by humans in a (semi)natural environment with the intention that they should live there without further human aid.

Fixed in https://github.com/tdwg/rs.tdwg.org/commit/c2dd0fd452f5aef44ec718f7182c0cffa53cde34 and https://github.com/tdwg/dwc/commit/e9d97e3106d46aff10169e1687af5bd8ac451289


Use a proxy to intercept responses, rather than a clone

This bypasses the buffering issues encountered in #591

@stalkerg could you look at this and try testing it?

Ah, so if I'm understanding this correctly, if the user calls await response.text() then that call is now made only a single time and we're not making our own call? If so, then I think that will work for the common case of getting the whole response body
I do think that this approach will not be compatible with streaming however. Are we comfortable with shutting off approaches that will let us do streaming in the future? Or should we also try to solve for the streaming use case now while we're working on this?

Correct, text() only gets called once. (Calling it a second time would be an error regardless of the proxy.)

I do not think that this approach will be compatible with streaming however

Why? All it means is that the streamed response doesn't get inlined. Think of the inlining as a progressive enhancement

I guess you can skip the serialized data with the way hydration works today. I was thinking you wouldn't be able to do that longer-term. E.g. if we have a mode where you trust the contents of the page instead of reconciling every element that might not work. But maybe that's too far away or too speculative to worry about right now

@benmccann yes, this fix is working for me, thanks!

excellent, will get this merged and released. thanks for verifying


matomo: 4.3.1 -> 4.4.1

Motivation for this change
There's a nag screen for a new version in the UI, along with some security updates concerning email notifications for 2FA changes.
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 134111 run on x86_64-linux 1

2 packages built:

piwik (matomo)
matomo-beta

Result of nixpkgs-review pr 134111 at ef0b3304 run on aarch64-linux 1

2 packages built successfully:

matomo
matomo-beta

1 suggestion:

warning: name-and-version
Did you mean to pass pname instead of name to mkDerivation?
Near pkgs/servers/web-apps/matomo/default.nix:25:16:
   |
25 |         inherit name;
   |                ^

Near pkgs/servers/web-apps/matomo/default.nix:26:9:
   |
26 |         version = fullVersion;
   |         ^

Did you mean to also add yourself as maintainer of matomo?

@ajs124 yeah, I would love to do that.


compilation errors

Hi, Would be nice if I can get some help in compiling the project. Looks like some code dependencies on BIRE, are not getting resolved.
May be because the BIRE code was refactored?
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/learning/NELTrainer.java:[13,14] cannot find symbol
symbol:   class SampledInstance
location: package corpus
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/learning/NELTrainer.java:[17,16] cannot find symbol
symbol:   class IBeamSearchSampler
location: package sampling
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/learning/NELTrainer.java:[113,13] cannot find symbol
symbol:   class IBeamSearchSampler
location: class de.citec.sc.learning.NELTrainer
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/learning/NELTrainer.java:[199,13] cannot find symbol
symbol:   class IBeamSearchSampler
location: class de.citec.sc.learning.NELTrainer
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/corpus/AnnotatedDocument.java:[20,58] wrong number of type arguments; required 1
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/template/NELEdgeTemplate.java:[18,15] cannot find symbol
symbol:   class FactorScope
location: package factors
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/template/StateFactorScope.java:[11,15] cannot find symbol
symbol:   class FactorScope
location: package factors
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/template/StateFactorScope.java:[20,46] cannot find symbol
symbol: class FactorScope
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/learning/NELHybridSamplingStrategyCallback.java:[8,16] cannot find symbol
symbol:   class BeamSearchSampler
location: package sampling
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/learning/NELHybridSamplingStrategyCallback.java:[9,35] cannot find symbol
symbol:   class BeamSearchSamplingStrategies
location: package sampling.samplingstrategies
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/MyBeamSearchSampler.java:[19,32] cannot find symbol
symbol:   class TrainingTriple
location: class learning.AdvancedLearner
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/MyBeamSearchSampler.java:[25,16] cannot find symbol
symbol:   class IBeamSearchSampler
location: package sampling
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/MyBeamSearchSampler.java:[28,35] cannot find symbol
symbol:   class BeamSearchSamplingStrategies
location: package sampling.samplingstrategies
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/MyBeamSearchSampler.java:[29,35] cannot find symbol
symbol:   class BeamSearchSamplingStrategy
location: package sampling.samplingstrategies
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/MyBeamSearchSampler.java:[30,62] package sampling.samplingstrategies.BeamSearchSamplingStrategy does not exist
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/MyBeamSearchSampler.java:[31,34] cannot find symbol
symbol:   class BeamSearchStoppingCriterion
location: package sampling.stoppingcriterion
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/MyBeamSearchSampler.java:[36,20] cannot find symbol
symbol: class IBeamSearchSampler
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/MyBeamSearchSampler.java:[57,15] cannot find symbol
symbol:   class BeamSearchStoppingCriterion
location: class de.citec.sc.sampling.MyBeamSearchSampler<InstanceT,StateT,ResultT>
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/MyBeamSearchSampler.java:[65,13] cannot find symbol
symbol:   class BeamSearchSamplingStrategy
location: class de.citec.sc.sampling.MyBeamSearchSampler<InstanceT,StateT,ResultT>
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/MyBeamSearchSampler.java:[73,13] cannot find symbol
symbol:   class BeamSearchSamplingStrategy
location: class de.citec.sc.sampling.MyBeamSearchSampler<InstanceT,StateT,ResultT>
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/MyBeamSearchSampler.java:[109,47] cannot find symbol
symbol:   class BeamSearchStoppingCriterion
location: class de.citec.sc.sampling.MyBeamSearchSampler<InstanceT,StateT,ResultT>
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/MyBeamSearchSampler.java:[440,12] cannot find symbol
symbol:   class BeamSearchStoppingCriterion
location: class de.citec.sc.sampling.MyBeamSearchSampler<InstanceT,StateT,ResultT>
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/MyBeamSearchSampler.java:[450,38] cannot find symbol
symbol:   class BeamSearchStoppingCriterion
location: class de.citec.sc.sampling.MyBeamSearchSampler<InstanceT,StateT,ResultT>
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/MyBeamSearchSampler.java:[461,42] cannot find symbol
symbol:   class BeamSearchSamplingStrategy
location: class de.citec.sc.sampling.MyBeamSearchSampler<InstanceT,StateT,ResultT>
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/MyBeamSearchSampler.java:[465,41] cannot find symbol
symbol:   class BeamSearchSamplingStrategy
location: class de.citec.sc.sampling.MyBeamSearchSampler<InstanceT,StateT,ResultT>
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/template/QAEdgeTemplate.java:[15,15] cannot find symbol
symbol:   class FactorScope
location: package factors
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/main/Pipeline.java:[50,35] cannot find symbol
symbol:   class BeamSearchSamplingStrategies
location: package sampling.samplingstrategies
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/main/Pipeline.java:[51,34] cannot find symbol
symbol:   class BeamSearchStoppingCriterion
location: package sampling.stoppingcriterion
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/template/SimilarityTemplate.java:[13,15] cannot find symbol
symbol:   class FactorScope
location: package factors
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/template/QALexicalTemplate.java:[13,15] cannot find symbol
symbol:   class FactorScope
location: package factors
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/template/SingleNodeFactorScope.java:[11,15] cannot find symbol
symbol:   class FactorScope
location: package factors
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/template/SingleNodeFactorScope.java:[20,60] cannot find symbol
symbol: class FactorScope
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/template/NELLexicalTemplate.java:[13,15] cannot find symbol
symbol:   class FactorScope
location: package factors
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/template/PropertyTemplate.java:[13,15] cannot find symbol
symbol:   class FactorScope
location: package factors
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/evaluator/ResultEvaluator.java:[9,14] cannot find symbol
symbol:   class SampledInstance
location: package corpus
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/evaluator/ResultEvaluator.java:[40,67] cannot find symbol
symbol:   class SampledInstance
location: class de.citec.sc.evaluator.ResultEvaluator
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/utils/LanguageDetector.java:[10,32] package org.apache.tika.language does not exist
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/learning/QATrainer.java:[13,14] cannot find symbol
symbol:   class SampledInstance
location: package corpus
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/learning/QATrainer.java:[17,16] cannot find symbol
symbol:   class IBeamSearchSampler
location: package sampling
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/learning/QATrainer.java:[113,13] cannot find symbol
symbol:   class IBeamSearchSampler
location: class de.citec.sc.learning.QATrainer
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/learning/QATrainer.java:[180,13] cannot find symbol
symbol:   class IBeamSearchSampler
location: class de.citec.sc.learning.QATrainer
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/template/QueryTypeTemplate.java:[20,15] cannot find symbol
symbol:   class FactorScope
location: package factors
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/SamplingStrategies.java:[13,35] cannot find symbol
symbol:   class BeamSearchSamplingStrategy
location: package sampling.samplingstrategies
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/SamplingStrategies.java:[14,62] package sampling.samplingstrategies.BeamSearchSamplingStrategy does not exist
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/SamplingStrategies.java:[22,53] cannot find symbol
symbol:   class BeamSearchSamplingStrategy
location: class de.citec.sc.sampling.SamplingStrategies
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/SamplingStrategies.java:[61,53] cannot find symbol
symbol:   class BeamSearchSamplingStrategy
location: class de.citec.sc.sampling.SamplingStrategies
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/SamplingStrategies.java:[97,53] cannot find symbol
symbol:   class BeamSearchSamplingStrategy
location: class de.citec.sc.sampling.SamplingStrategies
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/demo/APIPipeline.java:[66,35] cannot find symbol
symbol:   class BeamSearchSamplingStrategies
location: package sampling.samplingstrategies
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/demo/APIPipeline.java:[67,34] cannot find symbol
symbol:   class BeamSearchStoppingCriterion
location: package sampling.stoppingcriterion
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/QABeamSearchSampler.java:[19,32] cannot find symbol
symbol:   class TrainingTriple
location: class learning.AdvancedLearner
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/QABeamSearchSampler.java:[25,16] cannot find symbol
symbol:   class IBeamSearchSampler
location: package sampling
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/QABeamSearchSampler.java:[28,35] cannot find symbol
symbol:   class BeamSearchSamplingStrategies
location: package sampling.samplingstrategies
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/QABeamSearchSampler.java:[29,35] cannot find symbol
symbol:   class BeamSearchSamplingStrategy
location: package sampling.samplingstrategies
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/QABeamSearchSampler.java:[30,62] package sampling.samplingstrategies.BeamSearchSamplingStrategy does not exist
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/QABeamSearchSampler.java:[31,34] cannot find symbol
symbol:   class BeamSearchStoppingCriterion
location: package sampling.stoppingcriterion
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/QABeamSearchSampler.java:[36,20] cannot find symbol
symbol: class IBeamSearchSampler
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/QABeamSearchSampler.java:[57,15] cannot find symbol
symbol:   class BeamSearchStoppingCriterion
location: class de.citec.sc.sampling.QABeamSearchSampler<InstanceT,StateT,ResultT>
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/QABeamSearchSampler.java:[65,13] cannot find symbol
symbol:   class BeamSearchSamplingStrategy
location: class de.citec.sc.sampling.QABeamSearchSampler<InstanceT,StateT,ResultT>
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/QABeamSearchSampler.java:[73,13] cannot find symbol
symbol:   class BeamSearchSamplingStrategy
location: class de.citec.sc.sampling.QABeamSearchSampler<InstanceT,StateT,ResultT>
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/QABeamSearchSampler.java:[109,47] cannot find symbol
symbol:   class BeamSearchStoppingCriterion
location: class de.citec.sc.sampling.QABeamSearchSampler<InstanceT,StateT,ResultT>
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/QABeamSearchSampler.java:[419,12] cannot find symbol
symbol:   class BeamSearchStoppingCriterion
location: class de.citec.sc.sampling.QABeamSearchSampler<InstanceT,StateT,ResultT>
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/QABeamSearchSampler.java:[429,38] cannot find symbol
symbol:   class BeamSearchStoppingCriterion
location: class de.citec.sc.sampling.QABeamSearchSampler<InstanceT,StateT,ResultT>
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/QABeamSearchSampler.java:[440,42] cannot find symbol
symbol:   class BeamSearchSamplingStrategy
location: class de.citec.sc.sampling.QABeamSearchSampler<InstanceT,StateT,ResultT>
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/sampling/QABeamSearchSampler.java:[444,41] cannot find symbol
symbol:   class BeamSearchSamplingStrategy
location: class de.citec.sc.sampling.QABeamSearchSampler<InstanceT,StateT,ResultT>
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/template/NELNodeTemplate.java:[14,15] cannot find symbol
symbol:   class FactorScope
location: package factors
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/template/ResourceTemplate.java:[13,15] cannot find symbol
symbol:   class FactorScope
location: package factors
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/template/NodeSimilarityTemplate.java:[14,15] cannot find symbol
symbol:   class FactorScope
location: package factors
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/learning/QAHybridSamplingStrategyCallback.java:[9,16] cannot find symbol
symbol:   class BeamSearchSampler
location: package sampling
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/learning/QAHybridSamplingStrategyCallback.java:[10,35] cannot find symbol
symbol:   class BeamSearchSamplingStrategies
location: package sampling.samplingstrategies
[ERROR] /Users/topojoy/repos/AMUSE/src/main/java/de/citec/sc/template/QAEdgeAdvTemplate.java:[20,15] cannot find symbol
symbol:   class FactorScope
location: package factors

Hi, try switching to simplified-api branch of BIRE project.
Once the code compiles, you need index files to run the project.
I'll put the files as links in the README.MD soon.


Create Profile Page (UI)

Do all work for this task in a branch called issue-04
This page should have your marked favorite locations, your information that others can see, and a way to edit both of these things. This should change based on if the owner is on the profile page or a friend.

Surfing experience


ciao: move steps on how to setup ansible to development page

The current documentation instruct the user to download go, ansible and setup all the dependencies himself.
The documentation should minimize the number of steps by having the user use the ciao-deploy container which already has all the dependencies installed.
The steps on how to setup ansible and its dependencies should be moved to the development page.

Which would be the benefit of having all the ansible, go, etc install instructions into the development page?
To my understanding, that's neither helpful nor required for a proper development setup but would confuse users instead as it would state different instructions as the ones provided on the README.md
Plus, that'd add a maintenance cost as we would need to update that documentation every time the instructions for the docker container image changes.
We could inform about the Dockerfile and it's README.md used instead, that way if a user wants to know more about the container, can take a direct look into the Dockerfile used

This is tracked at https://github.com/01org/ciao/pull/795


[PE-D][Tester B] All existing assignments info are removed

Category: The feature does not solve the stated problem of the intended user i.e., the feature is 'incomplete'
As stated in the UG:

As a student, this behavior is honestly more stressing than the value it could bring to editm feature. Imagine if suddenly all the assg info in one module is missing just because you want to edit the typo in your assg info. Same as the tag issue, if the edit assg info feature cannot be implemented, then it is better to leave it as it is (do not perform edit). Since this is already considered delete already.

Labels: type.FeatureFlaw severity.Medium
original: florentianayuwono/ped#18

Thank you for the feedback. We acknowledge that this feature could potentially be improved, but for now it's not something that will cause software failure. Possibly a minor feature flaw.


chore: remove source-map-loader

seems to be unused

:tada: This PR is included in version 2.67.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Attempt to convert string representation of the error back to a pytho…

So this is my proposal for enhancement #153
This is a second attempt - hopefully a clean commit following #171.
So the main difficulty is that RequestBodyValidator.validate_schema() returns a problem like so:
problem(400, 'Bad Request', str(exception))
So the exception is basically cast to a string - even though this is quite a complex python data structure in the case of these validation errors.
So my small tweak is to use the ast module to safely convert this string back to a python data structure. I then attempt a couple of sanity checks - it's a list with at least one item - and then pull the error dictionary out. Once I have this object I'm able to log the error in a way that is easier to read (for me at least!) than just logging the returned string representation of the error.
Do you think this is worth doing? Is it safe? I'm not too sure about what RequestBodyValidator is doing - handling the error from json-schema I assume?
Maybe the better way to solve this issue would be to alter the behaviour in RequestBodyValidator.validate_schema() to not blindy convert the retuned exception to a string?
I've also not been able to test this properly under Python 3. It seems to work fine with 2.7 in my tests so far. Feedback welcomed :)

Hi @danballance ,
Thank you very much for your PR. I also got in the same situation as you described, wanting a better error message in the case of my response does not match the specification. I think that is a valid issue to handle in a better/more clear way.
I think that this PR indeed solves the problem showing a better feedback to the developer. Though it looks like a hack over Connexion's code itself. So I would like to suggest that we could maybe remove that str(exception) and pass this precious information in a better way.
Maybe we could extract the proper "detail" information from the exception itself and then pass it to the problem function?

I think a question is whether you want to expose that level of information in the problem response.  There are a ton of places that log debug like info, so I think it's interesting to determine when you want to just log something vs. return it in an http response.

I'd agree we don't want to expose that validation information in the problem response to the end user. I think a simple debug log message would be better.
I don't seem to get all of Github's notifications for some reason, so I unfortunately missed @rafaelcaricio response to me earlier in the month. I am off to the states for a week now, but could take a look at this when I get back if needed.
I agree with what has been said, my PR is really a hack. Getting the clean error string and simply debug logging that would be the best solution IMHO. However it seems like @dfeinzeig is already solving this issue here:
https://github.com/zalando/connexion/pull/185
Perhaps my PR could just be closed and enahcement #153 would also be solved by that work?

Agree with you guys on not exposing the error to users. I was not suggesting to add the exception error message to the problem object, but using the "detail" key in the logging message. @dfeinzeig already sent a #186 which do exactly what I was going to suggest. :)

Closing this in favor to #186.


Fonts in the device documents folder not loading on Android

When replacing the FMX engine with Skia (GlobalUseSkia:=True), if you use a custom font which is deployed into the device documents folder, it isn't loaded by Skia but was by FMX.
This seems to be ok for iOS builds but not Android.

Create an empty app. Set GlobalUseSkia:=True in the project source file as per the instructions in the readme
Drop a standard TLabel onto the form (not an TSkLabel)
Set the Font.Family to the name of your custom font.
Add the custom font file to the Deployment options for the app (Android), targeted to the internal documents directory (./assets/internal for Android, or StartUp/Documents for iOS)
Run the app on the device.

Note that the font isn't used. This is more obvious when using icon files such as FontAwesome.
If you set GlobalUseSkia:=False so the app is using FMX engine, it shows the font without a problem.
Note: This was a bug in Delphi too until 10.4 when it was fixed.
We use custom fonts extensively through our app (icon fonts) so this is a blocker for using Skia4Delphi in our productions app. This is a real shame as it's the only issue we've found, and is otherwise excellent!
If there's a workaround, or a patch that would be fantastic.

Hi @MyBuzzTechnologies, thank you very much to report the issue.
If the FMX behaves this way, then we must adapt Skia to behave the same way.
Until the next release arrives, you can make a simple code adaptation in your project:
uses
  System.IOUtils,
  Skia.FMX;

procedure TForm1.FormCreate(Sender: TObject);
begin
  {$IF DEFINED(ANDROID) OR DEFINED(IOS)}
  for var LFileName in TDirectory.GetFiles(TPath.GetDocumentsPath, '*.ttf', TSearchOption.soTopDirectoryOnly) do
    TSkTypefaceManager.RegisterTypeface(LFileName);
  {$ENDIF}
end;

Thank you, that's such a fast response and really appreciated.
I'll implement that change as a workaround.

Analisei melhor este caso e considero que não há nada a alterar em nosso sistema.
O Firemonkey não carrega fontes custons no Android, o que existe é algumas customizações existentes na internet para aplicar no "FMX.FontGlyphs.Android.pas" para tornar isso possível e algumas delas procuram na pasta TPath.GetDocumentsPath, mas não é código oficial. https://quality.embarcadero.com/browse/RSP-16741


Drop confusing Public Domain disclaimer from README

liquibase-sessionlock uses the Apache License v2.  The Public Domain disclaimer is a remnant of my initial work and is likely confusing.  It is at least to me.
This change doesn't deserve a new release, and I'm unsure how to avoid triggering the CI.  I see there are commits tagged [skip ci] – should this be included in the subject, or could go at the end of the commit message body?  I guess you could add that on merge ("Squash and merge"), also.

@stanio Thank you for the contribution! I tweaked the github actions to automatically update the README with the correct version, your PR is a nice test-case to see if that works ;-)


bpf mock tests print lots of warnings but succeed

When building bpf mock tests locally, they complain a lot but the build succeeds. It would be nice to quieten these as they are noisy and can mislead developers into thinking there's a problem here when the build actually succeeds:
$ make -C test/bpf/ nat-test

...
Creating mock for conntrack_stub...
In file included from nat-test.c:8:
In file included from ../../bpf/tests/nat_test.h:25:
In file included from ../../bpf/mock/mocks/mock_helpers.h:6:
In file included from ../../bpf/mock/mocks/helpers.h:10:
In file included from ../../bpf/include/bpf/compiler.h:8:
../../bpf/include/linux/../bpf/stddef.h:7:9: warning: 'NULL' macro redefined [-Wmacro-redefined]
#define NULL    ((void *)0)
        ^
/usr/lib/llvm-10/lib/clang/10.0.0/include/stddef.h:89:11: note: previous definition is here
#  define NULL ((void*)0)
          ^
In file included from nat-test.c:8:
In file included from ../../bpf/tests/nat_test.h:28:
../../bpf/mock/fake_maps.h:55:10: warning: incompatible pointer to integer conversion returning 'typeof ((map)->map_types->t_data)' (aka 'void *') from a function with result type 'int' [-Wint-conversion]
  return hashmap_remove(map, key);
         ^~~~~~~~~~~~~~~~~~~~~~~~
../../../hashmap/include/hashmap.h:221:32: note: expanded from macro 'hashmap_remove'
#define hashmap_remove(h, key) ({                                       \
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from nat-test.c:8:
../../bpf/tests/nat_test.h:128:27: warning: incompatible pointer types passing 'struct (anonymous struct at ../../bpf/tests/nat_test.h:106:1) *' to parameter of type 'hashmap_void_t *' [-Wincompatible-pointer-types]
  return fake_lookup_elem(&ipv4_ct_tuple_map, key);
                          ^~~~~~~~~~~~~~~~~~
../../bpf/mock/fake_maps.h:24:40: note: passing argument to parameter 'map' here
void *fake_lookup_elem(hashmap_void_t *map, void *key) {
                                       ^
In file included from nat-test.c:8:
../../bpf/tests/nat_test.h:128:47: warning: passing 'const void *' to parameter of type 'void *' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
  return fake_lookup_elem(&ipv4_ct_tuple_map, key);
                                              ^~~
../../bpf/mock/fake_maps.h:24:51: note: passing argument to parameter 'key' here
void *fake_lookup_elem(hashmap_void_t *map, void *key) {
                                                  ^
In file included from nat-test.c:8:
../../bpf/tests/nat_test.h:132:27: warning: incompatible pointer types passing 'struct (anonymous struct at ../../bpf/tests/nat_test.h:106:1) *' to parameter of type 'hashmap_void_t *' [-Wincompatible-pointer-types]
  return fake_update_elem(&ipv4_ct_tuple_map, key, value, flags, SNAT_MAPPING_IPV4_SIZE);
                          ^~~~~~~~~~~~~~~~~~
../../bpf/mock/fake_maps.h:29:38: note: passing argument to parameter 'map' here
int fake_update_elem(hashmap_void_t *map, void *key, void *value, __u32 flags, size_t size) {
                                     ^
In file included from nat-test.c:8:
../../bpf/tests/nat_test.h:132:47: warning: passing 'const void *' to parameter of type 'void *' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
  return fake_update_elem(&ipv4_ct_tuple_map, key, value, flags, SNAT_MAPPING_IPV4_SIZE);
                                              ^~~
../../bpf/mock/fake_maps.h:29:49: note: passing argument to parameter 'key' here
int fake_update_elem(hashmap_void_t *map, void *key, void *value, __u32 flags, size_t size) {
                                                ^
In file included from nat-test.c:8:
../../bpf/tests/nat_test.h:132:52: warning: passing 'const void *' to parameter of type 'void *' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
  return fake_update_elem(&ipv4_ct_tuple_map, key, value, flags, SNAT_MAPPING_IPV4_SIZE);
                                                   ^~~~~
../../bpf/mock/fake_maps.h:29:60: note: passing argument to parameter 'value' here
int fake_update_elem(hashmap_void_t *map, void *key, void *value, __u32 flags, size_t size) {
                                                           ^
In file included from nat-test.c:8:
../../bpf/tests/nat_test.h:136:27: warning: incompatible pointer types passing 'struct (anonymous struct at ../../bpf/tests/nat_test.h:106:1) *' to parameter of type 'hashmap_void_t *' [-Wincompatible-pointer-types]
  return fake_delete_elem(&ipv4_ct_tuple_map, key);
                          ^~~~~~~~~~~~~~~~~~
../../bpf/mock/fake_maps.h:54:38: note: passing argument to parameter 'map' here
int fake_delete_elem(hashmap_void_t *map, void *key) {
                                     ^
In file included from nat-test.c:8:
../../bpf/tests/nat_test.h:136:47: warning: passing 'const void *' to parameter of type 'void *' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
  return fake_delete_elem(&ipv4_ct_tuple_map, key);
                                              ^~~
../../bpf/mock/fake_maps.h:54:49: note: passing argument to parameter 'key' here
int fake_delete_elem(hashmap_void_t *map, void *key) {
                                                ^
In file included from nat-test.c:8:
../../bpf/tests/nat_test.h:146:19: warning: incompatible pointer types passing 'struct (anonymous struct at ../../bpf/tests/nat_test.h:106:1) *' to parameter of type 'hashmap_void_t *' [-Wincompatible-pointer-types]
    fake_init_map(&ipv4_ct_tuple_map, bpf_hash_ipv4_ct_tuple, bpf_compare_ipv4_ct_tuple);
                  ^~~~~~~~~~~~~~~~~~
../../bpf/mock/fake_maps.h:19:36: note: passing argument to parameter 'map' here
void fake_init_map(hashmap_void_t *map, size_t (*hash)(const void *key), int (*compare)(const void *a, const void *b)) {
                                   ^
10 warnings generated.
In file included from ../../bpf/mock/mocks/mock_helpers.c:6:
In file included from ../../bpf/mock/mocks/mock_helpers.h:6:
In file included from ../../bpf/mock/mocks/helpers.h:10:
In file included from ../../bpf/include/bpf/compiler.h:8:
../../bpf/include/linux/../bpf/stddef.h:7:9: warning: 'NULL' macro redefined [-Wmacro-redefined]
#define NULL    ((void *)0)
        ^
/usr/lib/llvm-10/lib/clang/10.0.0/include/stddef.h:89:11: note: previous definition is here
#  define NULL ((void*)0)
          ^
1 warning generated.
In file included from ../../bpf/mock/mocks/mock_helpers_skb.c:6:
In file included from ../../bpf/mock/mocks/mock_helpers_skb.h:6:
In file included from ../../bpf/mock/mocks/helpers_skb.h:10:
In file included from ../../bpf/include/bpf/compiler.h:8:
../../bpf/include/linux/../bpf/stddef.h:7:9: warning: 'NULL' macro redefined [-Wmacro-redefined]
#define NULL    ((void *)0)
        ^
/usr/lib/llvm-10/lib/clang/10.0.0/include/stddef.h:89:11: note: previous definition is here
#  define NULL ((void*)0)
          ^
1 warning generated.
In file included from ../../bpf/mock/mocks/mock_conntrack_stub.c:6:
In file included from ../../bpf/mock/mocks/mock_conntrack_stub.h:6:
In file included from ../../bpf/mock/conntrack_stub.h:15:
In file included from ../../bpf/include/bpf/ctx/skb.h:10:
In file included from ../../bpf/include/bpf/ctx/common.h:10:
In file included from ../../bpf/include/bpf/ctx/../compiler.h:8:
../../bpf/include/linux/../bpf/stddef.h:7:9: warning: 'NULL' macro redefined [-Wmacro-redefined]
#define NULL    ((void *)0)
        ^
/usr/lib/llvm-10/lib/clang/10.0.0/include/stddef.h:89:11: note: previous definition is here
#  define NULL ((void*)0)
          ^
1 warning generated.

cc @xinyuannn @Weil0ng

Can I try to fix that ?

Hello, I'm new here and I'd like to try to fix that @joestringer

Thanks! Don't hesitate to ask for help on the #development channel of Slack if necessary.

Thanks @cdelzotti, feel free to tag me or Xinyuan if you have any specific question :)

Thanks @Weil0ng , I've just fixed some typos (Trailing spaces, etc) and I hope this time will be charm :)

@Weil0ng I keep having issues with the checkpath test, is it important ?

@cdelzotti Yes, the four issues reported by checkpatch look legitimate and should be fixed.


Proxy server from package.json not working

Describe the bug
Same issue as in: https://github.com/facebook/create-react-app/issues/6031
Proxy is not working when I add "proxy": "http://localhost:8080", into package.json.
Only when you follow manual proxy config at https://create-react-app.dev/docs/proxying-api-requests-in-development/#configuring-the-proxy-manually everything works fine.
React-Scripts version: 4.0.1
Env: Win 10 + Node 14
React env: development

Port 8080 might already be in use / reserved. Try use another port, e.g.
  "proxy": "http://localhost:6000/",

Adding to this, it's also not working for me either:
React-Scripts version: 4.0.3
Env: macOS Big Sur, Apple M1
React env: development
I've tried:
"proxy": "http://localhost:6000/"
Result: Doesn't got to proxy, Failed
Copied code from create-react-app docs.
const { createProxyMiddleware } = require('http-proxy-middleware');

module.exports = function(app) {
  app.use(
    '/api',
    createProxyMiddleware({
      target: 'http://localhost:6000',
      changeOrigin: true,
    })
  );
};

Result: createProxyMiddleware is undefined, Error
Modified to fix error:
const createProxyMiddleware = require('http-proxy-middleware');

module.exports = function(app) {
  app.use(
    '/api',
    createProxyMiddleware({
      target: 'http://localhost:6000',
      changeOrigin: true,
    })
  );
};

Result: Doesn't go to proxy, Failed
I've made sure to restart the page every time, it never proxies. I am using npm start which the docs claim that it defaults to dev environment.


Protocol Definition of TimelineViewDelegate

The protocol definition of TimelineViewDelegate currently looks like this:
@protocol TimelineViewDelegate <NSObject>
...
@end

Because TimelineView inherits from UIScrollView, and UIScrollView already has a property 'delegate', you require every class that is a TimelineViewDelegate to also explicitly be a UIScrollViewDelegate:
@interface TimelineView : UIScrollView
...
@property (weak, nonatomic) IBOutlet id<TimelineViewDelegate,UIScrollViewDelegate>delegate;
...
@end

However, if you would let the TimelineViewDelegate protocol inherit from UIScrollViewDelegate, you could overcome this 'issue', and thus requiring less unneccessary code.
If we change the protocol definition to this:
@protocol TimelineViewDelegate <NSObject, UIScrollViewDelegate>

And make this change in TimelineView.h:
@property (weak, nonatomic) IBOutlet id<TimelineViewDelegate,UIScrollViewDelegate>delegate;

In your sample code, the delegate and dataSource are set via interface builder, which is why no warning is given when compiling the sample project -- even though ViewController does not conform to the UIScrollViewDelegate protocol. When setting the data source and/or the delegate programmatically, however, a compile warning is given.

Slightly off topic, but I thought I'd mention something here: there may be times where it's desirable to set the UIScrollViewDelegate and the TimelineViewDelegate separately (such as for synchronizing scrolling between timeline views). Perhaps splitting up the delegate would work as well?


oic: Add support for secure OIC connections using pre shared certs

As we had some securities concerns in PR #1527, sending for review only the security communication implementation, without the just works pairing.
Signed-off-by: Otavio Pontes<EMAIL_ADDRESS>

merged


Content-Type

This doesn't seem correct because sites without Content-Type gets through. A DOCTYPE check would also be good.

avieks
can you fix this script, if you can then just post the edited version here.

Do you have an example of a URL without content-type that I could test?

If I recall correctly there was no error, just from my side.


fix: triple ESM fix

fixed that we were reading the CJS specific @discordjs/node-pre-gyp with a named import which doesn't work with ESM
fixed the path to the package.json which was now incorrect due to dist/{cjs,esm}
added a createRequire banner
update tests to import from new path of index.ts

@sapphiredev pack