[Bug]: Unable to make SSL connection to SMTP server

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
Created a test DNN v9.13.00 website. Attempted to set up an SSL connection to the SMTP server. Tested SMTP connection. Got failure message. See Current Behavior below.
Steps to reproduce?

Created DNN v9.13.00 website on my workstation using NVQuickSite.
Set up SMTP connection with the following settings:
+++++++
SMTP server: strontium.namespro.ca
SMTP port: 465
SMTP SSL: On
Username: (my<EMAIL_ADDRESS>Password: (my password)
+++++++
Clicked on "Save" then "Test SMTP Settings". Connection failed with a "There is a problem with the configuration of your SMTP Server..." error message (see Current Behavior below).

Current Behavior

Expected Behavior
Used an online SMTP test service to make sure that the SMTP server was operating properly and there was no error in the credentials. The output is below:
Connected to smtps://strontium.namespro.ca:465/
<< 220 outbound.strontium.namespro.ca ESMTP MailEnable Service, Version: 10.29-10.29- ready at 10/08/23 13:08:12

EHLO [<IP_ADDRESS>]
<< 250-strontium.namespro.ca [<IP_ADDRESS>], this server offers 4 extensions
<< 250-AUTH CRAM-MD5 PLAIN LOGIN
<< 250-SIZE 40960000
<< 250-HELP
<< 250 AUTH=LOGIN
AUTH CRAM-MD5
<< 334 PDYxNjYwLjQzMzc1MDQ2OEBuYW1lc3Byby13aDI5Pg==
bnA2MDUxM0BiYXNpbHRoZXRvcnRvaXNlLmNvbSAzNTdmMGU5YWNkZDI3ZmIyMTE5NjZmZGI3Y2Q4MjQwMg==
<< 235 Authenticated CRAM-MD5
MAIL<EMAIL_ADDRESS>SIZE=576
<< 250 Requested mail action okay, completed
RCPT<EMAIL_ADDRESS><< 250 Requested mail action okay, completed
DATA
<< 354 Start mail input; end with .
From<EMAIL_ADDRESS>Date: Sun, 08 Oct 2023 19:08:09 퍍
Subject: SMTP test from strontium.namespro.ca
Message-Id: 22F42BMX6LU4.72FL4XX3TPWL2@WIN-AUIR3RRGP88
To<EMAIL_ADDRESS>MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="=-wg/fb0gvPkmBW78cwmOnxQ=="
--=-wg/fb0gvPkmBW78cwmOnxQ==
Content-Type: text/plain; charset=utf-8
Test message
--=-wg/fb0gvPkmBW78cwmOnxQ==
Content-Type: text/html; charset=utf-8
Content-Id: 22F42BMX6LU4.NUO6X6245L1Y@WIN-AUIR3RRGP88
Test message
--=-wg/fb0gvPkmBW78cwmOnxQ==--
.
<< 250 Requested mail action okay, completed

Relevant log output
none

Anything else?
nothing
Affected Versions
9.13.0 (latest release)
What browsers are you seeing the problem on?
Microsoft Edge
Code of Conduct

[X] I agree to follow this project's Code of Conduct

@skarpik would you mind installing a clean 9.12.0 and trying the same config. There was some changes regarding email providers in 9.13.0 and want to learn if it may be a new bug in 9.13.0 or not.
Thanks.

@skarpik I am pretty sure you may be running into an issue with your SMTP server not allowing "relay" from your Outlook domain.  ;-)

@skarpik would you mind installing a clean 9.12.0 and trying the same config. There was some changes regarding email providers in 9.13.0 and want to learn if it may be a new bug in 9.13.0 or not.
Thanks.

Will do.

@skarpik I am pretty sure you may be running into an issue with your SMTP server not allowing "relay" from your Outlook domain. ;-)
I don't think that's the problem. The email is being sent from an SMTP server sitting on namespro.ca (a Canadian ASP .NET web host). It doesn't matter whether the email is going to<EMAIL_ADDRESS>or<EMAIL_ADDRESS>(an email address sitting on DNN4Less). The only thing that is different here from my other websites is that I am using an SSL connection to the SMTP server. All of my other websites connect to the SMTP server without SSL.

Are you able to test your source server; the server DNN is running on? Last time I ran in to "it worked without SSL" it was because the server my DNN instance was on had not been TLS hardened and was still allowing TLS below 1.2; which almost all modern SMTP receivers will not allow. Anyhow, if you manage the server yourself and can remote on to the desktop, then download and run IIS Crypto. It will show clearly your TLS and related situation.
This is one of many things worth ruling out as your narrow down towards the real issue (if this is not it). In my experience, there are usually at least 2 issues so digging it to the client side and server side SMTP logs and seeing the back and forth word for word is the best way "to get at the truth."

A little background might help set the context...
This issue came up in a "just for fun" website. I use DNN4Less for all of my clients. However, I could see some time in the future a client insisting that the web server had to live in Canada. So I decided to build https://basilthetortoise.com/ using namespro.ca as the web host. Since it was just for fun, I decide to use as many DNN and 2SXC features as possible. One feature that I included was an SSL connection to the SMTP. Most of the websites that I do don't need to send email, so I don't set an SMTP server. And that is how I discovered this problem.
When new DNN or 2SXC versions come out, I usually build a local website on my workstation and use a non-SSL connection to an SMTP server. So for https://basilthetortoise.com/ being experimental and fun, I happened upon the SSL issue purely by accident. In trying to debug the problem, I figured that https://basilthetortoise.com/  might have some features that could confuse the issue, so I built the most simple local DNN instances with NVQuickSite (DNN version 9.12.00 and 9.13.00). Both exhibit the same problem as https://basilthetortoise.com/.
This SSL SMTP problem doesn't really impact me right now in a practical way. But I tend to be obsessive about hunting down bugs, hence, I posted this issue to Github.
Right now I'm flummoxed. Unless there are logs that I don't know about, DNN isn't giving me any hints on what is going on.

Given that this is a new host, is it possible they have a firewall rule that is preventing communication as well?
You may also want to try port 587 instead per guidance here (https://stackoverflow.com/questions/20228644/smtpexception-unable-to-read-data-from-the-transport-connection-net-io-connect)

Have you tried switching the mail provider in the web.config to the MailKit provider? The old Core provider has a lot of limitations around supported ports and security protocols supported.

Have you tried switching the mail provider in the web.config to the MailKit provider? The old/default Core provider has a lot of limitations around supported ports and security protocols supported.

No I haven't. Certainly willing to try. Could you please point me to some documentation to tell me what changes need to be made to the web.config. Thank you.

I'm not sure that we have official document on switching to the MailKit provider. However, it is relatively straightforward. You should find a <mail> section in the web.config that looks something like this:

Update the defaultProvider attribute from CoreMailProvider to MailKitMailProvider (note that updating the web.config will cause your site to restart).

Thanks @bdukes. I think I am making some progress but no positive news yet.
I'm focusing on port 587 for the SSL. When I use the default mail provider (CoreMailProvider) and test the SMTP connection, the website looks like it is thinking about doing something for several seconds but eventually it's all over and no test message has been sent and there is no error message (or message of any kind) in the Admin Logs.
When I switch over to MailKitMailProvider, I still can't send the test email. However, I do get an error message in the Admin Logs (see below). I guess that is progress.
I am quite sure that there is nothing wrong with the SMTP server because it tests out correctly using an SMTP Test Tool (https://www.gmass.co/smtp-test).
Here is the error message for MailKitMailProvider:
AbsoluteURL:/API/PersonaBar/ServerSettingsSmtpHost/SendTestEmail
DefaultDataProvider:DotNetNuke.Data.SqlDataProvider, DotNetNuke
ExceptionGUID:77e4bbae-1e5a-434d-8d75-addf95067c74
AssemblyVersion:
PortalId:-1
UserId:-1
TabId:-1
RawUrl:
Referrer:
UserAgent:
ExceptionHash:jB53Gnt6yMm0+jKaQVLBGaPYoXY=
Message:The SMTP server has unexpectedly disconnected.
StackTrace:
at MailKit.Net.Smtp.SmtpStream.d__39.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at MailKit.Net.Smtp.SmtpStream.d__46.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at MailKit.Net.Smtp.SmtpStream.ReadResponse(CancellationToken cancellationToken)
at MailKit.Net.Smtp.SmtpClient.d__93.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at DotNetNuke.Services.Mail.MailKitMailProvider.SendMail(MailInfo mailInfo, SmtpInfo smtpInfo)
InnerMessage:
InnerStackTrace:
Source:MailKit
FileName:
FileLineNumber:0
FileColumnNumber:0
Method:
Server Name: namespro-wh29

@skarpik I am pretty sure you may be running into an issue with your SMTP server not allowing "relay" from your Outlook domain. ;-)
I don't think that's the problem. The email is being sent from an SMTP server sitting on namespro.ca (a Canadian ASP .NET web host). It doesn't matter whether the email is going to<EMAIL_ADDRESS>or<EMAIL_ADDRESS>(an email address sitting on DNN4Less). The only thing that is different here from my other websites is that I am using an SSL connection to the SMTP server. All of my other websites connect to the SMTP server without SSL.

@skarpik my point here was that your Host Email is configured as<EMAIL_ADDRESS> So, that means the FROM address for any SMTP test notifications will be that email.  If the SMTP server is not set up to RELAY emails, it can lead to this behavior.

To test whether there is a problem with using an outlook.com email address, I changed my host email to<EMAIL_ADDRESS>(stevekarpik.com is hosted on DNN4Less). I first tried with port 2525 (that is what namespro.ca uses for non-SSL connections). It worked perfectly.
I then changed to port 587 which @bdukes said is the recommended SSL port (also recommended by support at namespro.ca). The test failed and I got an error message (see below). I know that the user id/password/port combination works because it worked perfectly on https://www.gmass.co/smtp-test.
I'm racking my brain on this one but getting nowhere. All the evidence seems to point to some problem with the DNN SMTP code for servers that require SSL.
I'm willing to try to debug this one but I'd need a few pointers on how to set up a test environment.

AbsoluteURL:/API/PersonaBar/ServerSettingsSmtpHost/SendTestEmail
DefaultDataProvider:DotNetNuke.Data.SqlDataProvider, DotNetNuke
ExceptionGUID:34ed1156-7363-482e-b12f-e249f1d1aeb9
AssemblyVersion:
PortalId:-1
UserId:-1
TabId:-1
RawUrl:
Referrer:
UserAgent:
ExceptionHash:jB53Gnt6yMm0+jKaQVLBGaPYoXY=
Message:The SMTP server has unexpectedly disconnected.
StackTrace:
at MailKit.Net.Smtp.SmtpStream.d__39.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at MailKit.Net.Smtp.SmtpStream.d__46.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at MailKit.Net.Smtp.SmtpStream.ReadResponse(CancellationToken cancellationToken)
at MailKit.Net.Smtp.SmtpClient.d__93.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at DotNetNuke.Services.Mail.MailKitMailProvider.SendMail(MailInfo mailInfo, SmtpInfo smtpInfo)
InnerMessage:
InnerStackTrace:
Source:MailKit
FileName:
FileLineNumber:0
FileColumnNumber:0
Method:
Server Name: namespro-wh29

@skarpik perhaps we can try to help this Friday during our open source co-coding session on Discord?

@skarpik I strongly suspect a TLS issue as noted by @jeremy-farrance

@jeremy-farrance and @mitchelsellers - I suspect that both of you are pointing in the direction of a solution. I will join the Open Coding session on Discord this Friday that @david-poindexter mentioned above. This problem with SSL SMTP presents an excellent opportunity for me to learn how to debug and solve this sort of problem.

I believe that I may have a solution. Following a suggestion from @bdukes, I have focused my attention on MailKitMailProvider rather than CoreMailProvider.
MailKitMailProvider works properly if you cert for the SMTP is consistent (i.e. the name of the server matches the name on the cert). However, if you are using shared hosting and a Let's Encrypt cert, this will not be the case and MailKit will throw an exception. For instance, for my website stevekarpik.com that is hosted on DNN4Less, the name of the webserver is mail.stevekarpik.com but the actual SMTP server has a different name.
Proposed Solution:
My solution has two parts:

Explicitly set the SSL protocols used by the SMTP client object. This may no be necessary, however, given the advice from @jeremy-farrance, it seemed to be to be prudent.
Create a ServerCertificateValidationCallback event handler that lets MailKit ignore the name mismatch on the cert.

The original and revised code are below.
Notes:

The inspiration for this solutions comes from notes associated with the MailKit repository:
Source: https://github.com/jstedfast/MailKit/blob/master/FAQ.md#ssl-handshake-exception
As best as I can tell, SslProtocols.Tls13 is not defined in the version of .Net that we are  using. Consequently, I use (SslProtocols)12288. However, it may be that we don't need to reference TLS1.3.
The event handler for ServerCertificateValidationCallback is very primitive. It may be that a more appropriate event handler will look at the exception and process it in a less blunt way.

I have tested this one two servers (DNN4Less.com and namespro.ca) and the SMTP test passes with flying colours. I have not looked at any SMTP servers that use OAuth.
As I mentioned above, the DNN v9.13.0 code likely works perfectly for situations where the SSL certificate for the SMTP server is consistent and unambiguous. However, for situations where there is shared hosting and an Let's Encrypt SSL cert, MailKit is is unhappy. The problem can be fixed, however, by creating an appropriate ServerCertificateValidationCallback  handler.
I am a relative GitHub novice, so I don't know the appropriate steps to publish my proposed solution so that others can test it and make sure there are no unwanted side-effects.
Original Code (DNN v9.13.0):
public override string SendMail(MailInfo mailInfo, SmtpInfo smtpInfo = null)
{
	try
	{
		var (host, port, errorMessage) = ParseSmtpServer(ref smtpInfo);
		if (errorMessage != null)
		{
			return errorMessage;
		}

		var mailMessage = CreateMailMessage(mailInfo, smtpInfo);

		using (var smtpClient = new SmtpClient())
		{
			smtpClient.Connect(host, port, SecureSocketOptions.Auto);

			if (smtpInfo.Authentication == "1" && !string.IsNullOrEmpty(smtpInfo.Username) && !string.IsNullOrEmpty(smtpInfo.Password))
			{
				smtpClient.Authenticate(smtpInfo.Username, smtpInfo.Password);
			}

			var (provider, portalId) = this.GetOAuthProvider(smtpClient, smtpInfo);
			if (provider != null)
			{
				provider.Authorize(portalId, new OAuthSmtpClient(smtpClient));
			}

			smtpClient.Send(mailMessage);
			smtpClient.Disconnect(true);
		}

		return string.Empty;
	}
	catch (Exception exc)
	{
		return HandleException(exc);
	}
}

Revised Code:
public override string SendMail(MailInfo mailInfo, SmtpInfo smtpInfo = null)
{
	try
	{
		var (host, port, errorMessage) = ParseSmtpServer(ref smtpInfo);
		if (errorMessage != null)
		{
			return errorMessage;
		}

		var mailMessage = CreateMailMessage(mailInfo, smtpInfo);

		using (var smtpClient = new SmtpClient())
		{
			// *** replacement code (October 15, 2023 - SK) ***
			// Source: https://github.com/jstedfast/MailKit/blob/master/FAQ.md#ssl-handshake-exception
			// Note: (SslProtocols)12288 is the enum value for SslProtocols.Tls13
			// ---------------------------------------------------------------------------------------
			smtpClient.ServerCertificateValidationCallback = (s, c, h, e) => true;
			if (smtpInfo.EnableSSL)
			{
				smtpClient.SslProtocols = SslProtocols.Ssl3 | SslProtocols.Tls | SslProtocols.Tls11 | SslProtocols.Tls12 | (SslProtocols)12288;
			}

			smtpClient.Connect(host, port, smtpInfo.EnableSSL);

			// *** end of replacement code ***
			// ---------------------------------------------------------------------------------------
			if (smtpInfo.Authentication == "1" && !string.IsNullOrEmpty(smtpInfo.Username) && !string.IsNullOrEmpty(smtpInfo.Password))
			{
				smtpClient.Authenticate(smtpInfo.Username, smtpInfo.Password);
			}

			var (provider, portalId) = this.GetOAuthProvider(smtpClient, smtpInfo);
			if (provider != null)
			{
				provider.Authorize(portalId, new OAuthSmtpClient(smtpClient));
			}

			smtpClient.Send(mailMessage);
			smtpClient.Disconnect(true);
		}

		return string.Empty;
	}
	catch (Exception exc)
	{
		return HandleException(exc);
	}
}

I think that if we were to utilize something like this, at a minimum it would need to be a setting to allow users to bypass the certification validation check, as in many other situations that test is critical and a security feature that should not be ignored.
Maybe even a list of options and set i

TLS 1.3 + Certificate Validation
TLS 1.3 w/o Certificate Validation
TLS 1.2 etc....

I agree that we'd need to provide an option for whether to ignore the certificate validation (does the core implementation ignore the certificate automatically?).
I would tend to think that we leave the protocols set to the default, unless someone has a specific case where they need to override that.

@mitchelsellers - I agree that my solution leaves much to be desired from a security perspective. The dilemma for me is that if we stick with the status quo, DNN websites that use shared hosting and have less than optimal SSL certs would not be able to use SSL at all but would have to use an unsecured option. Your solution gives the DNN user an option if they are going to degrade security but it might be hard for people to wrap their heads around.
I am hoping that someone can come up with something better than I propose. However, the fact that my solution comes directly from the MailKIt documentation makes me think that this is not an uncommon situation and the workaround is rather unsatisfactory.
Maybe we need some way of telling the user that the SMTP server has a name mismatch and asking whether they want to continue. I run into this with FileZilla (an FTP program). Often I make connections where the ftp server has a different name than my website URL but it is the URL for the webhost and I proceed because it all looks sensible.

Here is an example of what FileZilla tells me:

I have noticed a number of situations over the years where the user was given the option to connect and use SSL even though some aspect of the certificate's validation was "not up to snuff." One from a couple years ago was a VS Code extension, liximomo's SFTP. He got SSL working on the FTP and of course, quickly found out LOTS of people wanted the SSL more than they wanted to do the work to make the SSL cert valid.
Here is the option in the config file that he added (and made a few dozen very vocal people very happy):
  "port": 21,
  "secure": true,
  "secureOptions": {
    "rejectUnauthorized": false
  },

Reject unauthorized set to false because a) I want the security but b) I realize the SSL name doesn't match (and I don't want or need to fix it because its my server).
Anyhow, sorry this got long, in short, I am just saying this is a valid pattern (and path to happiness). "Not an uncommon situation."

I think that @jeremy-farrance's observation is true in many cases the most important thing is that the data transfer is encrypted.
I have a client where visitor's to the website can sign up for programs. When they press "submit" on the webform, their information is sent by email to the program coordinator. There is no money involved (i.e. no credit card info) but I'd feel better if the personal information of the web visitors was encrypted (they send their name, address, email address and telephone number). My client hasn't complained that we're using non-secure SMTP but I'd feel better if the information was encrypted.
If my client had the budget to pay for hosting and a cert that meets all the requirements, that's the route I'd follow. But they're a non-profit with a super tight budget. So I'm looking for the best solution for them - probably one that is on the pragmatic side.

I think the simple solution here might be the middle ground between what we have now, and what I posted earlier which is closer to what @jeremy-farrance has posted.
For example two options

Use SSL
Require Trusted Certificate

The second option is only there if you have selected "Use SSL" and we would need to provide good help text.  We could also go with "Reject Untrusted Certificates" or similar to flip it to the negative side of things.
Given the risk of what can happen without the verification, it should be noted that it is not recommended to disable this unless it is being done for a trusted/known reason. The primary thing that could be caught by this is a Man In the Middle type attack where downstream the communications are redirected, as well as expired or untrusted SSL certificates.

Sounds good to me. I was thinking of wording like "Allow Invalid Certificate"

Allow Invalid Certificate

Yes!  That is much cleaner

@bdukes and @mitchelsellers - this would be a terrific solution. The default would be the fully secure configuration unless the user agreed to accept invalid certificates.


OV POT integration for QuestionAnswering task

What does this PR do?
This PR includes an implementation to integrate OpenVINO POT APIs for the QuestionAnswering task for 8-bit post-training quantization.

@dkurt Please review.

Before submitting

[ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
[ ] Did you make sure to update the documentation with your changes?
[x] Did you write any new necessary tests?

There is an error on CI:
AssertionError: Operation Sqrt not found in MO operations, please check it!

Please workaround it by
torch.sqrt = lambda x: torch.pow(x, 0.5)

Hi, @karkadad! Do you mind if I push to this branch to resolve CI issues?

@dkurt Please go ahead, thanks


Firebase Filter from array

Version info

Angular: 4
Firebase: 2
AngularFire: 2
Other (e.g. Ionic/Cordova, Node, browser, operating system):
How to filter by array value
{
  "-KsZygqlVr6v9xS-ZdIu": {
    "dates": [
<PHONE_NUMBER>000,
<PHONE_NUMBER>000,
<PHONE_NUMBER>000,
<PHONE_NUMBER>000,
<PHONE_NUMBER>000,
<PHONE_NUMBER>000,
<PHONE_NUMBER>000
    ],
    "from": "BRve0x1bFfhPflqsMH1GgiDRoku1",
    "message": "Testing",
    "subject": "Saddam",
    "timestamp":<PHONE_NUMBER>291
  },
  "-KsbVTEOgTug-cpdSqnP": {
    "dates": [
<PHONE_NUMBER>000
    ],
    "from": "BRve0x1bFfhPflqsMH1GgiDRoku1",
    "message": "For P R",
    "subject": "OOO",
    "timestamp":<PHONE_NUMBER>773
  },
  "-KsbdoraeOsLvBqga8Fx": {
    "dates": [
<PHONE_NUMBER>000
    ],
    "from": "BRve0x1bFfhPflqsMH1GgiDRoku1",
    "message": "REasion",
    "subject": "Sub OO",
    "timestamp":<PHONE_NUMBER>727
  }
}
}

I'm trying
this.db.list(${tableNames.LeaveMessage}/${channelId},
ref => ref.child('dates')
.children(["1503945000000", "1503946000000"])
.on('value', snapshot => snapshot.val())
)
this is not filtering by children it's returning all data

Hey @msaddamci! Please use Stackoverflow for these kids of how to questions as this repo is dedicated to troubleshooting bugs.


Add a user facing roadmap to the data portal

Who is the desired audience?
What we want that audience to take away from reading our roadmap?
What is the content or level of content that PLs or Oversight want in the user roadmap?

Obsolete


test ci

Questions to address:

[ ] how to include container's arguements into sha256 sum? without that the container is not rebuilt for a changed argument
[ ] the maintanance node on hohgant can change; can we introduce a slurm partition instead?
[ ] find a location in JFrog to push the images and the naming convention
[ ] "one dockerfile for one build" or "single dockerfile with options"?
[ ]  for QE reframe test: how to specify the executable binary name from the command line?
[ ] running two mpi binaries in a single shell script

cscs-ci run default

cscs-ci run default

cscs-ci run default

cscs-ci run default

@teojgo I can barely make it run.


Support grouping for "must-be-updated-together" dependencies

To be clear, this feature request is different from #1190.
It is not about convenience (creating one PR instead of creating multiple PRs to keep the history clean), but rather about something that must-have when you're working with scoped packages or packages that are released together.
The issue:
There are some packages that are released and work together and if you update just one of them the build will essentially fail.
Examples for such packages are @angular/core & @angular/compiler, @angular/cli & @angular-devkit/build-angular, react and react-dom and so on.
The request:
Allow (either implicitly like in greenkeeper) or explicitly (like in renovate) updating these group dependencies in a single PR.
The lack of this functionality is a blocker for anyone who uses multiple packages that are tightly coupled and have the same release schedule (and even a few packages I specified above  are, well, quite popular).
All the beautiful work Dependabot does is worth nothing if one still have to spend time on manually updating group dependencies.

@just-jeb we have the ability to group tightly coupled dependencies but have only done so for vue and vue-template-compiler (because it breaks the build if using different versions).
From my understanding react and react-dom minor/patch versions can be out of sync without breaking. Whenever there's a major version bump we'll update them together (due to the peer dependency requirement).
Trying to figure out if we should be grouping angular and seeing that @angular/core, @angular/compiler, @angular/cli have a slightly different versions scheme and release schedule to @angular-devkit/build-angular and @angular/pwa.
You know if these should be grouped differently? Is there anything in angular that breaks if
for example, core and compiler versions don't match up?
Looking at the greenkeeper list it looks like we could maybe just use their definitions list to group these dependencies.

Using greenkeeper definitions is a good start, although making it configurable is a preferable option.
Regarding Angular I know for sure that @angular/cli and @angular-devkit are tightly coupled and can break even with minor version changes. I'd say for Angular everything (the whole @angular scope and @angular-devkit scope) should be grouped together as they are always released together.
There is an open PR (for almost a year now) in Greenkeeper monorepo-definitions repository where you can get more details.

@just-jeb yeah definitely keen to support custom grouping in future but pretty stacked atm integrating with Github so won't get to anytime soon unfortunately. Will see what makes sense on grouping cli/devkit. Keen to keen the grouping to stuff that's breaking atm until we have a way of configuring it.

Just wanted to bump this and report that I've encountered the same issue with graphics and windowing crates in the Rust ecosystem. gfx, glutin, and gfx_window_glutin often require lockstep upgrades and dependabot has opened separate PRs against my repositories to upgrade each of these independently. Those PRs fail CI with no (obvious) way to merge/combine them.

I would love this. For example I would like all NPM packages that start with @babel/ to be updated together and all packages that start with @storybook/ to be updated together.
My npm outdated often looks like this

which would be nice if it was just 2 PRs (although to be fair it's happened before that some specific babel plugin dependency breaks my build but the others don't but I can debug this manually when it happens)

I would like to point out this is also the case for .NET core sdks, there was a recent bump from 2.2 to 3 and we had about 30 prs created that I had to manually consolidate into one branch to get it to build

This seems to be related to https://github.com/dependabot/dependabot-core/issues/317

Isn't there a solution for this yet? I can do this very easily in using npm-check-updates and using GitHub actions.
Dependant bot spams my email every day to update every single package individually! I prefer to bump all of them at the same time in a single pull request if my tests pass!

I haven't been able to find whether this is documented anywhere, but I discovered a workaround (at least for Gradle dependencies): https://github.com/dependabot/dependabot-core/issues/1618#issuecomment-665863295

@ashughes Thanks for the answer. That seems to be specific to Gradle. There is no such thing in other languages. That is why a shell coding interface is necessary for the Dependant bot to allow others to excecute custom dependency management tasks.

@aminya To be clear, I wasn't suggesting that this issue is solved. Just that for Gradle there appears to be a workaround (and I'm not sure if there are similar workarounds for other build systems). Still would like to see official support for this in Dependabot!

The answer is simple: talk with the guys in charge of package.json syntax and add a variable interpolation as is in maven or gradle.
I miss that feature on node that is on java for decades.

I think is not a dependabot problem but a package.json problem.

@mercuriete That is already solved by ncu. The problem is that there is no shell interface for dependant bot.

Just my 2 cents on this.
I'm really struggling with this missing capability on my repositories :(
I think I can workaround some like it was said above with a variable for some external libraries where the numbers match, but that is not always the case.
The main issue is when there are many upstream repositories that contribute to mine, and the version numbers are all independent and cause most builds to fail with "downgrade detected" errors.
Note: in my scenario it is for C#/nuget projects

Just another use case:
My project uses an electron, and during build requires electron-releases which provide additional information about the current version of the electron.
Thus electron-releases should ALWAYS be updated before the electron is updated, or updated simultaneously. Otherwise, this will cause the build to crash.
Because the bot creates separate update PR, the team must keep this feature in mind so as not to accidentally merge the electron update PR before merging the electron-releases PR.

Just another use case:
My project uses an electron, and during build requires electron-releases which provide additional information about the current version of the electron.
Thus electron-releases should ALWAYS be updated before the electron is updated, or updated simultaneously. Otherwise, this will cause the build to crash.
Because the bot creates separate update PR, the team must keep this feature in mind so as not to accidentally merge the electron update PR before merging the electron-releases PR.

I ran into this issue in my repo when dependabot updated @fortawesome/free-solid-svg-icons (https://github.com/sparkletown/sparkle/pull/872), but not the other related deps:

@fortawesome/free-regular-svg-icons
@fortawesome/fontawesome-svg-core
@fortawesome/react-fontawesome

I ended up implementing (https://github.com/sparkletown/sparkle/pull/973) a (rather unconventional) workaround to add a test that fails when one of the 'related deps' is updated without the others:

https://github.com/sparkletown/sparkle/blob/307eb1cc672cca4a806a327b3e313f9af3ebfed6/package-lock.test.ts#L16-L40

I have done similar in the past to check the various React versions and ensure they all match as well.
Not a perfect solution at all, but at least it makes it obvious and we can easily manually step in and fix it when it happens.

I ran into this issue in my repo when dependabot updated @fortawesome/free-solid-svg-icons (https://github.com/sparkletown/sparkle/pull/872), but not the other related deps:

@fortawesome/free-regular-svg-icons
@fortawesome/fontawesome-svg-core
@fortawesome/react-fontawesome

I ended up implementing (https://github.com/sparkletown/sparkle/pull/973) a (rather unconventional) workaround to add a test that fails when one of the 'related deps' is updated without the others:

https://github.com/sparkletown/sparkle/blob/307eb1cc672cca4a806a327b3e313f9af3ebfed6/package-lock.test.ts#L16-L40

I have done similar in the past to check the various React versions and ensure they all match as well.
Not a perfect solution at all, but at least it makes it obvious and we can easily manually step in and fix it when it happens.

Has this been implemented now?  I just had this PR:

Has this been implemented now?  I just had this PR:

I had a PR like that a year ago for jest so I this is something new. I've only ever had one like this in the hundred or so repos that I have using Dependabot though.
https://github.com/xt0rted/slash-command-action/pull/100

I had a PR like that a year ago for jest so I this is something new. I've only ever had one like this in the hundred or so repos that I have using Dependabot though.
https://github.com/xt0rted/slash-command-action/pull/100

This is still on the list of things we'd love to fix but haven't had the bandwidth yet. We've been spent a lot of time keeping up with growth and lately focusing on upgrading package managers.
The above grouped update example happens when there's a peer dependency requirement between several dependencies forcing them to be updated together. The current logic isn't perfect and dependabot often bails trying to resolve these conflicts and opts to do nothing instead :/

This is still on the list of things we'd love to fix but haven't had the bandwidth yet. We've been spent a lot of time keeping up with growth and lately focusing on upgrading package managers.
The above grouped update example happens when there's a peer dependency requirement between several dependencies forcing them to be updated together. The current logic isn't perfect and dependabot often bails trying to resolve these conflicts and opts to do nothing instead :/

Another use case (recognizing that you have it on the roadmap, and putting it here for search engines mostly): @types for specific JS packages. It's pretty often going to be the case—especially across any major version bump—that you will need to upgrade @types/foo-package and foo-package together.

Can confirm that this is an issue on .NET. Various Microsoft.EntityFrameworkCore.* packages (Microsoft.EntityFrameworkCore.Abstractions, Microsoft.EntityFrameworkCore.Analyzers, Microsoft.EntityFrameworkCore.Design, etc.) can't be updated individually because mixing of different versions of these packages is not supported. Dependabot created 7 PRs for each of those packages and most of those PRs failed to build. I had to update everything manually and then dependabot closed its PRs.

A use case for golang is k8s dependencies. All packages from "k8s.io" need to be updated at the same time.
Example go.mod snippet
	k8s.io/api v0.20.4
	k8s.io/apimachinery v0.20.4
	k8s.io/client-go v0.20.4
	k8s.io/kubectl v0.20.4
	k8s.io/kubernetes v1.20.4

This would be nice to have for opentelemetry Rust crates as well.

Would be nice for @aws-cdk packages as well (node and others). They are all kept to the same version and actually must be deployed with the same version.
Any timeline for this beloved feature?

Got a grouped update today.
I don't know how they are managed.
https://github.com/wallabag/wallabag/pull/5537
@babel packages aren't grouped by the way.
I'm wondering how some packages are grouped and some aren't.

Solving this is a more general way is a bit beyond dependabot's scope.  However, you should be able to solve this with a custom github workflow.  You would create an action that runs whenever a new PR is created by dependabot and it uses github-script to locate instances of PRs for related dependencies across your repo and then merges the changes from the new PR into the existing one and closes this new PR with a comment referring to the other PR.
Related to #3856

Don’t think I’ve seen it mentioned, but Playwright is an example of a cross-package-manager constraint: https://github.com/PREreview/prereview.org/pull/114 (npm) and https://github.com/PREreview/prereview.org/pull/117 (Dockerfile) need to be combined.

On the Ruby world, Sentry gems like sentry-ruby, sentry-rails, sentry-resque and others also have to be updated together.

In Python, packages which don't have type annotations included can have them in separate packages with conventional names (e.g. package + package-stubs).
A setting allowing to specify which packages should be updated together (or have the exact same version number) would make this feature very flexible.

@gavv This seems to be possible with .NET projects by specifying the version of co-dependent dependencies using a property (see below) in your project file.
<PropertyGroup>
    <AvaloniaVersion>0.10.16</AvaloniaVersion>
</PropertyGroup>

<ItemGroup>
        <PackageReference Include="Avalonia" Version="$(AvaloniaVersion)"/>
        <PackageReference Include="Avalonia.Desktop" Version="$(AvaloniaVersion)"/>
        <!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
        <PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="$(AvaloniaVersion)"/>
        <PackageReference Include="Avalonia.ReactiveUI" Version="$(AvaloniaVersion)"/>
</ItemGroup>

I had 4 Dependabot PRs that were trying to update individual Avalonia dependencies. I changed my Avalonia dependency versions to a variable and Dependabot closed 3 of the PRs and changed the open PR to look like the following. You should be able to apply the same concept to Entity Framework dependencies. Hope this helps!

In Golang you also need some deps to be updated together, or you get errors: https://stackoverflow.com/questions/71391062/build-error-in-go-golang-column-does-not-implement-gorm-columntype-missing-aut
In this example, these:
go get gorm.io/gorm
go get gorm.io/driver/mysql
go get gorm.io/driver/sqlserver
go get gorm.io/driver/postgres

The issue:
There are some packages that are released and work together and if you update just one of them the build will essentially fail.
Examples for such packages are @angular/core & @angular/compiler, @angular/cli & @angular-devkit/build-angular, react and react-dom and so on.

This also applies for ag-grid. If you get a required update on one of these packages, you need to upgrade all of them at once:
"@ag-grid-community/client-side-row-model": "^28.2.1",
"@ag-grid-community/core": "^28.2.1",
"@ag-grid-community/react": "^28.2.1",
"@ag-grid-enterprise/column-tool-panel": "^28.2.1",

This also applies for ag-grid. If you get a required update on one of these packages, you need to upgrade all of them at once:

Same for @sentry.
I have to manually update all of them every time because they need to be grouped together, in my instance
@sentry/integrations
@sentry/react
@sentry/tracing

Although I closed it as a duplicate, there's some nice discussion of potential ways to configure specifying these lists of deps over in:

https://github.com/dependabot/dependabot-core/issues/2672

This is also required for updating Android Gradle dependencies because Google couples the Jetpack Compose dependency with a specific Kotlin language version and also a specific KSP version.
All three dependencies have different numbers, so they can't just use the same version number stored in a variable, but all three of them need to be updated in the same PR

Update: We've started doing some grouped updates work! This particular issue might not be part of the first ship but if you want to track our updates, do follow #1190

If anyone's looking for a DIY solution, we've had some success in foxglove/studio by using the yarn constraints feature.
First we define version groups in constraints.pro:
(note: the Yarn team is planning to migrate the constraints feature from Prolog to JavaScript in Yarn v4: https://github.com/yarnpkg/berry/issues/1276)
% Define version groups for dependencies. All dependencies in the same group will be required to have the same version.
version_group(Dep, storybook) :-
  Dep = 'storybook';
  has_prefix('@storybook/', Dep), Dep \= '@storybook/testing-library'.
version_group(Dep, typescript_eslint) :-
  has_prefix('@typescript-eslint/', Dep).

Then we have a GitHub actions workflow that runs on Dependabot PRs:
    if: |
      github.actor == 'dependabot[bot]' &&
      contains(github.event.pull_request.head.ref, 'dependabot/npm_and_yarn/')

This workflow runs yarn constraints --fix, yarn install, yarn dedupe, and pushes a commit with the resulting package.json and lockfile changes.
This way, we get PRs that actually bump multiple packages at once. For example, https://github.com/foxglove/studio/pull/5891 bumps @typescript-eslint/eslint-plugin and @typescript-eslint/parser.
This approach only works for packages that are bumped together and have the exact same version number. It doesn't just bump multiple packages each to their latest versions, but it enforces that they have the same version.

This is also required for updating Android Gradle dependencies because Google couples the Jetpack Compose dependency with a specific Kotlin language version and also a specific KSP version. All three dependencies have different numbers, so they can't just use the same version number stored in a variable, but all three of them need to be updated in the same PR

You can use Gradle's lib.versions.toml file, dependabot knows how to work with it.
For working real-life example see my SO post: https://stackoverflow.com/a/76067491/1540501
Realted Gradle documentation: https://docs.gradle.org/current/userguide/platforms.html#sub:conventional-dependencies-toml

This is also required for updating Android Gradle dependencies because Google couples the Jetpack Compose dependency with a specific Kotlin language version and also a specific KSP version. All three dependencies have different numbers, so they can't just use the same version number stored in a variable, but all three of them need to be updated in the same PR

@sebaslogen In this case you can use Gradle's lib.versions.toml file, dependabot knows how to work with it.
For working real-life example see my SO post: https://stackoverflow.com/a/76067491/1540501
Realted Gradle documentation: https://docs.gradle.org/current/userguide/platforms.html#sub:conventional-dependencies-toml

That doesn't solve the problem because the libraries that need to be updated in the same group so not share the same version number (like suggested in the SO answer).
Example: Compose version 1.4.1 works only with kotlin 1.8.0

Looks like something is coming https://github.com/dependabot/fetch-metadata/pull/389 & https://github.com/dependabot/fetch-metadata/pull/374

I appreciate the dependabot team worked for the useful feature!

If you didn't notice the blog post, it's available in beta https://github.blog/changelog/2023-06-30-grouped-version-updates-for-dependabot-public-beta/

Awesome, thanks to the team for working on this! It seems to be working well for us so far: https://github.com/foxglove/studio/pull/6367

Thank you for adding this! It's working pretty well so far, though we did run into #7305.

Thank you for this long awaited feature. Worked very well for Go modules, with one minor, non-blocking issue #7521.

Closing this out as we've officially released grouped version updates; please feel free to reopen or reach out if there are more questions or feedback.

@abdulapopoola
I was hoping to use this for packages in our rails projects.
It's common for rails packages (e.g. active-storage, action-cable, shakapacker) to have both a ruby gem and an npm package.
Unfortunately the new functionality is limited to packages within a single package ecosystem. Is there are technical reason for this limitation?


Issue7

Solves issue #7: Adds a class ShoppingList for controlling added items. Receives signals about new items through newItem(). This adds up item amounts when signals about the same item is sent multiple times.
SLOTS for wiping the list, wipe last added item, wipe specific items and inputting specific item amounts have also be implemented (mentioned in #8).
The class inherits from QAbstractTableModel, and all functions that make changes to the internal shopping list are made to notify a connected view through Qt's MVC mechanisms. Issue #8 is therefore reduced to subclassing QTableView in an appropriate way.

Problem: Names function as unique identifiers, and new item amounts are added to the total amount if both price and name match an existing item. Items are ignored when price is different.
We will, however, probably have support for 'arbitrary'-items where the price can be arbitrarily defined. This is not possible in the current API. Will think through and possibly fix.


Now it pass the Web Accessibility Checker test

Fixed Issue (Some I remember)

Readable: Make text content readable and understandable.

Input Assistance: Help users avoid and correct mistakes.

Text Alternatives: Provide text alternatives for any non-text content

Now for https://achecker.ca/checker/index.php there are no known problems

This PR prompted me to add a short explanation of alt-tags with examples at https://wildaid.github.io/style/2020/10/02/Alt-Text.html - it might be helpful if you're stuck on a description.
Thanks for sparking this! Really excellent stuff.

Hi @saribricka!
We noticed you haven't gotten your MongoDB digital swag. To claim your O-FISH badge, head on over to the MongoDB Community forums, login, and reply - making sure to link to this PR.


How to obtain sparse 3D points with color ?

Hi, thanks for your teams' great work.
May I ask how can I get colored sparse 3D spoints ? When I run  Demo data, I can get clomap-format data but visualized 3D potins in colmap-gui are black.

Hi, it seems that this is not the result of our demo data. I'm sure the produced point cloud using demo data with readme's instruction has color. You can try it first to see whether it works well. Moreover, we note that the L22 in demo config needs to be specified to your absolute path to data so that the color can be extracted.

@lt-xiang Excuse me. I want to run this work on my custom datasets, what settings should I change?
And how can i convert the bin file to txt format?


python311Packages.leidenalg: 0.10.1 -> 0.10.2

Description of changes
Changelog: https://github.com/vtraag/leidenalg/blob/0.10.2/CHANGELOG

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.05 Release Notes (or backporting 23.05 and 23.11 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

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Ugh igraph broken on darwin.

Ugh igraph broken on darwin.

By this PR or also before?

Oh but it's fixed by #285897. What a tangle.

By this PR or also before?

Before.


[WIP][CARBONDATA-1235]Add Lucene Datamap

Add lucene coarse grained datamap . User can write lucene datamap by lucenedatamap writer while loading data .

[X] Any interfaces changed?
No

[X] Any backward compatibility impacted?
No

[X] Document update required?
No

[X] Testing done
Add a Testcase

[X] For large changes, please consider breaking it into sub-tasks under an umbrella JIRA.
NA

Can one of the admins verify this patch?

add to whitelist

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/1143/

Can one of the admins verify this patch?

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/1160/

SDV Build Fail , Please check CI http://<IP_ADDRESS>:8080/job/ApacheSDVTests/1736/

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/1168/

SDV Build Fail , Please check CI http://<IP_ADDRESS>:8080/job/ApacheSDVTests/1746/

need a good way to test datamap  and register our datamap(such as lucene datamap) into carbondata core.
I add lucene datamap test code in carbondata core , so carbondata core test case is failed.

Please change the target branch to apache:fgdatamap

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/1294/

Build Success with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/1297/

SDV Build Fail , Please check CI http://<IP_ADDRESS>:8080/job/ApacheSDVTests/1766/

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/1320/

SDV Build Fail , Please check CI http://<IP_ADDRESS>:8080/job/ApacheSDVTests/1785/

Can one of the admins verify this patch?

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/1394/

SDV Build Fail , Please check CI http://<IP_ADDRESS>:8080/job/ApacheSDVTests/1840/

Build Failed with Spark 2.2.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder/1093/

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/2309/

SDV Build Fail , Please check CI http://<IP_ADDRESS>:8080/job/ApacheSDVTests/2544/

Build Failed with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder/2285/

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/3522/

SDV Build Success , Please check CI http://<IP_ADDRESS>:8080/job/ApacheSDVTests/3368/


Updating Secrets list in Build and Release

Notes for Reviewers
This PR fixes #11331
Signed commits

[x] Yes, I signed my commits.

🚀 Preview for commit f1dc8da41b912481ede25420335208f866222385 at: https://668e3d50ecf80505f06f84bc--meshery-docs-preview.netlify.app


Allow tags to be referenced on geometry with dot notation

There is currently no way to refer to tags defined within functions, which means that you can't—for example—fillet an edge of a part defined in a function. We should allow the tags defined in a pipe expression be referenced later in the program using dot notation on the named constant that references the pipe expression. This pairs well with #2928 to give us big strides towards "Components as KCL functions".
This KCL code doesn't work today, but should eventually:
fn triangle = (origin) => {
  return startSketchOn('XZ')
  |> startProfileAt(origin, %)
  |> line([60.53, 96.64], %, $A)
  |> line([45.66, -93.45], %)
  |> lineTo([profileStartX(%), profileStartY(%)], %)
  |> close(%)
}

const myTriangle = triangle([3.19, 0.53])

// This doesn't work today
const myTaggedEdge = myTriangle.A

Here is a longer example comparing the direct definition and function definition approaches. I think both should work.
// Function version
fn rect = (origin) => {
  return startSketchOn('XZ')
  |> startProfileAt(origin, %)
  |> angledLine([0, 191.26], %, $rectangleSegmentA001)
  |> angledLine([
       segAng(rectangleSegmentA001, %) - 90,
       196.99
     ], %, $rectangleSegmentB001)
  |> angledLine([
       segAng(rectangleSegmentA001, %),
       -segLen(rectangleSegmentA001, %)
     ], %, $rectangleSegmentC001)
  |> lineTo([profileStartX(%), profileStartY(%)], %)
  |> close(%)
}
const rectangleFromFunction = rect([0, 0])

// Direct version
const rectangleDirect= startSketchOn('XZ')
  |> startProfileAt([200, 0], %)
  |> angledLine([0, 191.26], %, $rectangleSegmentA002)
  |> angledLine([
       segAng(rectangleSegmentA002, %) - 90,
       196.99
     ], %, $rectangleSegmentB002)
  |> angledLine([
       segAng(rectangleSegmentA002, %),
       -segLen(rectangleSegmentA002, %)
     ], %, $rectangleSegmentC002)
  |> lineTo([profileStartX(%), profileStartY(%)], %)
  |> close(%)

// Extrusions
const extrusionFromFunction = extrude(40, rectangleFromFunction)
const extrusionDirect = extrude(40, rectangleDirect)

// Fillets
fillet({
  radius: 40,
  tags: [getNextAdjacentEdge(rectangleSegmentA002, extrusionDirect)]
}, extrusionDirect)

// This code won't work today: referencing the tags within a sketch using dot notation
fillet({
  radius: 40,
  tags: [
    getNextAdjacentEdge(
      rectangleFromFunction.rectangleSegmentA001,
      extrusionFromFunction
    )
  ]
}, extrusionFromFunction)

Please read https://kittycadworkspace.slack.com/archives/C04KFV6NKL0/p1720192343486969 before executing on this one :)

In the Slack thread, the conversation went to defining reusable components. But I think this feature is in some ways counter to making reusable components because without additional knobs, allowing referencing geometry using dot notation exposes the internal implementation. This is problematic because later, when you change the implementation, you need to worry about not breaking callers who may reference all the tags that you exposed. For backward compatibility, you have to assume Hyrum's Law, that anything exposed will be depended upon.
For this reason, I think that there needs to be a way to explicitly control the output of a tag. The tagging feature, as it currently is, is convenient. But it's essentially an additional return value. Anything that will be used as a clear interface between two things -- whether those things are functions, modules, or whatever -- the author needs to be able to control it to not expose internals that were never meant to be a promised part of the interface or contract.
I, personally, would like if the proposed dot notation worked internally only.
fn triangle = (origin) => {
  const t = startSketchOn('XZ')
  |> startProfileAt(origin, %)
  |> line([60.53, 96.64], %, $A)
  |> line([45.66, -93.45], %)
  |> lineTo([profileStartX(%), profileStartY(%)], %)
  |> close(%)

  // I can use t.A here like any other variable.

  return t
}

const myTriangle = triangle([3.19, 0.53])

// This shouldn't work since $A is local to the function.
// const myTaggedEdge = myTriangle.A

But maybe there's a way to specify in the signature what's exposed outside the function.
I don't particularly like the syntax below, and it's definitely half-baked, but the point is that it's explicit.
Additionally, we can determine whether the use is valid by examining only the function signature. Contrast this with the OP's proposal where we would need to inspect the implementation of triangle() to determine whether myTriangle.A is defined, what its type is, etc.
I could also conceive renaming the tags before output so that you can use concise names internally and explicit, unambiguous names externally.
// The function specifies that it returns a Sketch with a tag called top.
// It can be a comma-separated list to include others, like Sketch{top, left}
fn triangle = (origin): Sketch{top} => {
  const t = startSketchOn('XZ')
  |> startProfileAt(origin, %)
  |> line([60.53, 96.64], %, $top)
  |> line([45.66, -93.45], %, $left)
  |> lineTo([profileStartX(%), profileStartY(%)], %)
  |> close(%)

  // I can use t.top and t.left here like any other variable.

  return t
}

const myTriangle = triangle([3.19, 0.53])

// Now this works since `top` is exposed in the signature.
const myTaggedEdge = myTriangle.top

// This doesn't work since `left` is not exposed in the signature.
// const myTaggedEdge2 = myTriangle.left

This is a very cool idea @jtran, I like it. There's a lot of authoring intent going into that interface, so I guess I'm wondering what a point-and-click only user flow for that experience could look like. I worry that if a user wants to make a function for some repeatable piece of geometry, it will not be obvious for a long while why they can't perform some later action that relies on having access to a tag within the component's geometry.
Sketching on face, for example, relies on having a tag of a sketch's segment. So if someone has made some geometry with a component, then goes to sketch on a face only to learn they don't have access to that face because the component author didn't make a public tag, that seems frustrating. Or, like you see in my demo, they actually have to alter the implementation to unlock sketching on a face generated by that segment.
https://github.com/KittyCAD/modeling-app/assets/23481541/af74757e-f408-4b12-a932-9c98ca070a97

Yes, I see what you mean. In the point and click interface, it would likely be confusing if it didn't let them choose a face and start sketching on it. After chatting with Jess about it, maybe we'll need to deal with hiding internal implementation details for assemblies or packages. But for everyday scripts that we're working with now, it's not really a problem.

I was about to raise the same point as Frank, I think everything does need to be exposed.
And in the case of us we having robust support for installing 3rd party packages, and we have a crates.io equivalent, I think we should have a lint rule that forces all segments to have a tag before you can publish. That way user's are still able to select any and all features on what they've imported (we can add a ast-mod fix as well for making the tags 6 character hashes or similar).
Controling what's exposed makes sense for what functions or geometry is exported from a module, but I don't think it would really work for tags.
Sure the scripts we currently support now don't have this usecase, but this seems like a future problem we will hit sooner or later, and makes sense to avoid.

I think we should have a lint rule that forces all segments to have a tag before you can publish

I think it'd be better if all segments get auto tagged (could be a hash of the line and in cases of duplicates an incremented counter, all which would be more robust than just 0, 1, 2 etc which would change as maybe more segments are added), and then maybe always returned from a function

I solved this when I solved the other


Add support for PHP 8.4

Implicitly nullable parameter declarations are deprecated in PHP 8.4. The proposed change is safe and is not considered by PHP as a signature change, see https://php.watch/versions/8.4/implicitly-marking-parameter-type-nullable-deprecated

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
Attention: Patch coverage is 75.00000% with 2 lines in your changes missing coverage. Please review.

Project coverage is 79.79%. Comparing base (2d8bde1) to head (3af876c).
Report is 9 commits behind head on main.

Files
Patch %
Lines

src/Rule/AbstractRule.php
0.00%
1 Missing :warning:

src/TwigPort/TokenStream.php
50.00%
1 Missing :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@             Coverage Diff              @@
##               main     #332      +/-   ##
============================================
- Coverage     79.83%   79.79%   -0.04%
  Complexity      749      749
============================================
  Files            55       55
  Lines          2603     2593      -10
============================================
- Hits           2078     2069       -9
+ Misses          525      524       -1

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

Hi,
Is this possible to get this merged and released ? Not a big deal, but it pollutes our CI results.

Thank you, @cedric-anne!

Released as friendsoftwig/twigcs:6.5.0!


@tincams/api-git warns about missing Repo

There was an API change in @tinacms/api-git#router. It was accounted for in the gatsby plugin but not for Next. This adds a warning about that and updates the demo-next.

@jpatters what's atob? It's being used in configure.ts but it isn't being imported. That seems like it might be a bug 🤔


Weave docker container won't auto start when reboot host machine

While weave launch, we restart host machine. the dock engine started. but the weave , weaveproxy, weaveplugin won't auto start.
we should start these container by hand.

The plugin has always had --restart=always, and we added it to the router and proxy containers in version 1.5.
Do you get any error messages in the Weave container logs or in Docker's logs?

I am trying as the guide told me how to do:
https://www.weave.works/guides/part-3-creating-and-scaling-multi-host-docker-deployment-with-swarm-and-compose-using-weave/
After i restart docker machine one by one weave-1, weave-2, weave-3.
The weave container won't auto start

OK, looks like that guide has a copy of the Weave script at version 1.4.1.  I'll raise this issue over there.


Multithreading (or rather multiprocessing)

A small disclaimer, this is more of a longterm issue with quite a bit of planning before any PR with actual merge intent should ever be attached to this.
First of all, what should we use?
There's the threading module, however it does not use additional cores. Using it isn't advised thusly, because it's theoretically possible max performance improvement is just +100% for all scenarios (you know, two threads per core usually), and actual performance increases are expected to be somewhere around +10% to +50%. Nothing irrelevant, but the simple fact is we can do better.
There's the multiprocessing module, and this is almost what we should use. There's also the multiprocess module that should generally be more robust (better pickling etc).
So multiprocess it is.
So, can it work? Yes it can. I've had to jump through some hoops but I managed to hack something together to multiprocess 4 simple scenes side by side. Theoretically possible speed bonus is +300% and actual was... +200%. Now that is nothing to scoff at. Obviously with more things processed simultaneously both theoretical and actual speed goes up, capped really only by the running hardware and available splitting. On my hardware with 16 cores I expect to be able to reach an actual improvement of about +1000% for example. That's around an order of magnitude so... it'd change things up a lot.
Alright, we've got the intent and the module, now onto the plan.
First we should enable multiprocessing for scenes. Multithreading is really easy, but multiprocess is a bit more picky. As I said, I have gotten scenes rendered in it but something about the exact implementation in extract_scenes.py is still making it fail while pickling. I'm not sure what it is, I just know that it can be fixed, since I was able to sidestep it.
(Fixed, see next post for that)
Once that is done we should be able to use manim (assuming 4 scenes in a file) with something like this:
manim project -at
And have all 4 scenes dropped into their own process.
Once this is implemented and works well, we can move on to the real prize.
In order to make manim faster in general we can split scenes into intervals, and then have each interval be handled by a separate process. For instance if a scene has 8 animations then we could split them like [1,2], [3,4], [5,6], [7,8] and throw each interval into its own process.
Now this would mean that some calculations are done multiple times. While the process rendering [1,2] would have no overhead, the one rendering [3,4] would have to do the calculations of [1,2] before it can start rendering. However those calculations are usually very, very short compared to the rendering process, so that's not really much of an issue.
Last but not least, we'll want this multiprocessing to be an option, not replacing the current way of serial rendering. Aside from making sure we have options if something ever causes issues, some people use manim to render stuff that is actually very heavy in calculations, like fractals. For those cases multiprocessing could actually be actively detrimental, and aside from just needlessly hogging computing power could also overflow the RAM. So multiprocessing shouldn't be on by default, but when it's in we should make sure everyone knows it's there. Maybe even drop a small message every time manim runs with just 1 process.

Alright, the pickling problem has been solved. The issue was in the way manim imported the project module, by spec. Importing it normally works.
I've made a new branch with the according edited file, (and again, no PRs and merges for that branch):
Edited extract_scene.py
The changes are simple:

Import the multiprocess library
Change the way the project module is imported
Switch the direct scene rendering call for a process wrapped one
Turn off open_file_if_needed. No need to fix this, when someone renders multiple videos at once putting them into preview doesn't make sense anyway (unless we'd put them into a playlist, but that's not exactly a high priority I'd think)

The problems that are still left:

Simple as this implementation is, currently it just replaces serial rendering instead of adding the option.
Some of you might remember I said that with threading the visual feedback looked almost okay... That is certainly not the case anymore. The processes now all dump their progress into the same bar, and the info dump on created files and played animations usually isn't a beauty either.

I really need to do other things for a while though, so I'm leaving that cleaned up Proof of Concept file not just for others but also for myself to come back to later as well.
And if someone wants to tests the waters with adapting the UI already that'd be welcome as well. I won't be doing that as that's completely out of my realm of experience.

There's now an issue with the new Tex handling, which will presumably be fixed by #98, so I'm waiting on that to continue.
I've worked a bit more on the likely to be implemented structure, and will leave that here mostly for myself, and as a general reference.
In order to properly implement multiprocessing we'll likely have to do something like this:

Once a final config file is in place, it'll need a bool for whether multiprocessing is used or not and an argument for the process count. Or maybe make it simpler and just have 1 process act as a False upon check. If it isn't enabled (by default or cli), trod along normally, else switch to the new code.
Initialize a worker pool in extract_scene.py. Each scene will be thrown into the pool using an async method. Which one is yet to be determined (apply, map, starmap, etc.)
The splitting logic will likely have to be placed in scene.py, within self.construct(). Due to the way it's structured the only real place I see this working is right in play().
We'll probably have to wrap and adapt this part in specific:

        animations = self.compile_play_args_to_animation_list(*args, **kwargs)
        self.begin_animations(animations)
        self.progress_through_animations(animations)
        self.finish_animations(animations)

These newly created play processes all need to be tracked and waited for to finish within the scene, before moving on from self.construct(), else only evil things can be expected to happen:
Because the partial_movie_file_list.txt should be produced only after all processes for play statements are finished, there should be no problems here. If somehow videos are spliced together in wrong order, this would be the place to look.

We live in a post-#98 world. Can we revisit this?
Also, RE point 1. above: you don't need a bool AND an argument. You can just set the default number of workers to 1 for no multiprocessing.

We live in a post-#98 world. Can we revisit this?

Not forgetting about this, but while #98 was brewing I had been working on the 3 new geometry classes (#187) to which I still I need some input too. Since both are pretty much entirely on my shoulders working on one delays the others and I'm not sure which to prioritize. The classes definitely have more general utility.

Also, RE point 1. above: you don't need a bool AND an argument. You can just set the default number of workers to 1 for no multiprocessing.

Right, like I mentioned there.

Making a note to myself here to also wait for #166 to be finished since it touches the same files multiprocessing has to be spliced into.

Just wanted to say that there are some changes planned down the line for the config system that would work perfectly with multiprocessing but not with multithreading. So in case there is a change from multiprocessing to multithreading down the line, please let me know first so we can discuss.

Update here:
The next TO DO item on the config system is to make it not global anymore, but local to each Scene class. Once this is done, it should be fairly simple to implement parallel scene rendering using multiprocessing.
There have also been refactors in the scene file writer that may make this easier.

Related to multiprocessing: sphinx has an option to run in parallel. If we make sure our docs can build in parallel, then we should be able to speed up sphinx builds by 2x or 4x (assuming the RTD machines have many CPUs...)

Just wanted to say that there are some changes planned down the line for the config system that would work perfectly with multiprocessing but not with multithreading. So in case there is a change from multiprocessing to multithreading down the line, please let me know first so we can discuss.

This isn't ever going to happen though. In terms of performance multiprocessing would be a massive increase in speed for most cases while multithreading would be... well not completely useless, but honestly, mostly.

The next TO DO item on the config system is to make it not global anymore, but local to each Scene class. Once this is done, it should be fairly simple to implement parallel scene rendering using multiprocessing.
There have also been refactors in the scene file writer that may make this easier.

Speaking of which, how far along is this exactly?

Related to multiprocessing: sphinx has an option to run in parallel. If we make sure our docs can build in parallel, then we should be able to speed up sphinx builds by 2x or 4x (assuming the RTD machines have many CPUs...)

Sounds good. Is my still planned multiprocessing project related to implementing that at all though? If, how?

This isn't ever going to happen though. In terms of performance multiprocessing would be a massive increase in speed for most cases while multithreading would be... well not completely useless, but honestly, mostly.

Fair!

The next TO DO item on the config system is to make it not global anymore, but local to each Scene class. Once this is done, it should be fairly simple to implement parallel scene rendering using multiprocessing.
There have also been refactors in the scene file writer that may make this easier.

Speaking of which, how far along is this exactly?

Honestly, the only thing left to do is make each Scene have its own instance of a ManimConfig object. This is not a difficult PR, but it will break basically every scene in existence. So there's that to consider. Is this something that's blocking this project? We could try to speed that up if so.

Related to multiprocessing: sphinx has an option to run in parallel. If we make sure our docs can build in parallel, then we should be able to speed up sphinx builds by 2x or 4x (assuming the RTD machines have many CPUs...)

Sounds good. Is my still planned multiprocessing project related to implementing that at all though? If, how?

Well, the manim_directive uses manim to render all the examples. Each directive can be marked as safe or unsafe to parallelize. Right now, it is marked as unsafe because manim has no support for parallelization. So in the course of working on this project, it would be good to keep in mind for further down the line. (Having said that, I don't actually know if multiprocessing would count as "safe", or if it's something that sphinx would even recognize...)

Hi all! Is there any update on this?

Unfortunately not from my side at least. I can't live off of this and have other stuff to attend, especially right now, so I simply can't tackle it. I'd have to reconnect with the current state of the repo too. What originally kept me tethered to Manim was somewhat temporarily severed by the pandemic. I might get back in touch with all of this eventually, but if I do... it will be another year, and that's the optimistic estimate.


RadioButton

When tapping "See Style" the displayed style code snippet is cut off on the right side

The xaml issue will be fixed in #165


samples: tracing: Reenable the percepio test case

Update to a fixed percepio tree, which allows the build to pass for valid version numbers with 0 being one of the version number components.
Fixes #63357

@nashif @teburd updated now to reference the new commit in the percepio tree


on debian based systems libssl-dev is required as dependency

libssl-dev doesnt come default on ubuntu (tested on lubuntu 20.04).
WIthout it -lnetwork wont link against openssl.
(it just lists libssl-dev as a dependency now in the README)

Can you also add it to the Dockerfile? There is a list there with programs that get installed when one creates a docker image.

Can you also add it to the Dockerfile? There is a list there with programs that get installed when one creates a docker image.

It does seem to be in the Dockerfile.

Hmm. You’re right. Must have missed it then when I looked for it. That also explains why the ci never failed on this. LGTM now.


Improve redirect after upload

Consider having the following buttons:

Upload and go to main
Upload and add another
Cancel and got to main

Maybe after uploading it's better redirecting to myPost instead of main?

and is "Upload and add another" really important?

@uttamdhakal  I don't think upload and add another is really that important here.
Cancel is added, redirection to main is correct.


Extreme lag in grid window

Issue description:
Dragging items in your inventory on the (crafting) grid window causes a lot of lag to the point where it is hard to even drag something.
Refined storage 1.2.1 with latest forge on 1.10.2 in a unstable type modpack but most mods updated to latest version
Using jei_1.10.2-<IP_ADDRESS>1

Please create a profiling report, because I can't do anything with this.
Explanation here:
https://github.com/raoulvdberge/refinedstorage/issues/523#issuecomment-256419502

Closing due to lack of extra info. If you send us the report, I'll reopen.


feat: implement basic vtk mesh reading

add a new feature to the core crate: io. When enabled, the function CMap2::from_vtk_file is made available. It allows the user to initialize a combinatorial map from a VTK legacy file.
There are a number of limitation on the input file, notable requirements include coherent cell orientation and exclusive cell types.
Scope

[x] Code: honeycomb-core

Type of change

[x] New feature(s)

Other

[x] New dependency: vtkio

Codecov Report
Attention: Patch coverage is 0% with 118 lines in your changes are missing coverage. Please review.

Project coverage is 80.83%. Comparing base (b2f903b) to head (e187a02).

Files
Patch %
Lines

honeycomb-core/src/cmap2/io.rs
0.00%
118 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##           master      #73      +/-   ##
==========================================
- Coverage   85.72%   80.83%   -4.89%
==========================================
  Files          16       17       +1
  Lines        1954     2072     +118
==========================================
  Hits         1675     1675
- Misses        279      397     +118

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


[Python] Analyze standalone PKG-INFO

PythonDistributionAnalyzer analyzes PKG_INFO only if it's in .egg-info/ or EGG-INFO/
Setuptools docs says that: "Because it’s possible for this to be the only metadata file included, .egg-info format eggs are not required to be a directory; they can just be a .egg-info file that directly contains the PKG-INFO metadata."
PEP 314 says that: "This file will be named PKG-INFO and will be placed in the top directory of the source distribution (where the README, INSTALL, and other files usually go)."
And indeed many projects ship just PKG-INFO without any .egg-info/, for example:
https://pypi.python.org/pypi/moin
https://pypi.python.org/pypi/docutils
https://pypi.python.org/pypi/pycrypto
https://pypi.python.org/pypi/python-gnupg
https://pypi.python.org/pypi/salt

Thanks - we will look into this in addition to some other enhancements around the python analyzer.


Memory safety issues in compact::Vec

Hello, we have noticed a soundness issue and/or a potential security vulnerability in this crate while performing a security scan on crates.io.
Description
compact::Vec contains multiple memory safety issues.

It mishandles large capacity and causes out-of-bound access in 32-bit / allocator layout mismatch in 64-bit.
remove() is not panic-safe and causes double-free when an index larger than the length is provided.

Demonstration

Crate: ordnung
Version: 0.0.1
OS: Ubuntu 18.04.5 LTS
Rust: rustc 1.46.0 (04488afe3 2020-08-24)

#![forbid(unsafe_code)]

mod boilerplate;

use ordnung::compact::Vec as CompactVec;

struct DropDetector(u32);

impl Drop for DropDetector {
    fn drop(&mut self) {
        println!("Dropping {}", self.0);
    }
}

fn main() {
    boilerplate::init();

    #[cfg(target_pointer_width = "32")]
    {
        println!("1. OOB is possible because MASK_HI is 0 in 32-bit build.");

        boilerplate::trace_alloc(move || {
            let mut vec: Vec<u8> = Vec::with_capacity(1);
            vec.push(1);

            // https://github.com/maciejhirsz/ordnung/blob/e1f1e3bda332dae33b76ca4be00dba46265e4cbe/src/compact.rs#L281-L282
            // len / cap packing doesn't work in 32-bit environment and cap will be always zero.
            // Admittedly, this is not a real security threat as the code will scream and panic in the debug build.
            // However, it is still a soundness issue since it allows UB in safe Rust code.
            // This crate doesn't seem to support 32-bit, so it would be better to make it an error at the compile time.
            let mut compact_vec = CompactVec::from(vec);
            println!("pointer: {:p}", compact_vec.as_ptr());
            println!("len: {}", compact_vec.len());
            println!("capacity: {}", compact_vec.capacity());

            // https://github.com/maciejhirsz/ordnung/blob/e1f1e3bda332dae33b76ca4be00dba46265e4cbe/src/compact.rs#L48
            // Allows us to push elements over the boundary because `len != cap`
            for i in 0..4 {
                compact_vec.push(i);
                println!("Pushed {}", i);
            }
            println!("len: {}", compact_vec.len());
            println!("capacity: {}", compact_vec.capacity());

            // cap is 0, so no deallocation
        });
    }

    #[cfg(target_pointer_width = "64")]
    {
        println!("2. Allocator layout mismatch in 64-bit build with large capacity.");

        boilerplate::trace_alloc(|| {
            // https://github.com/maciejhirsz/ordnung/blob/e1f1e3bda332dae33b76ca4be00dba46265e4cbe/src/compact.rs#L35-L37
            // Allocation is done with capacity `(1 << 32) + 4`,
            let _ = CompactVec::<u8>::with_capacity((1 << 32) + 4);
            // https://github.com/maciejhirsz/ordnung/blob/e1f1e3bda332dae33b76ca4be00dba46265e4cbe/src/compact.rs#L185-L193
            // but deallocation is done with capacity `4`.
            // This may corrupt the internal state of the allocator, which can cause the memory safety violation.
        });
    }

    {
        println!("3. `Vec::remove()` causes double-free when panicking.");

        let mut compact_vec = CompactVec::with_capacity(32);
        compact_vec.push(DropDetector(123));
        compact_vec.push(DropDetector(456));

        // https://github.com/maciejhirsz/ordnung/blob/e1f1e3bda332dae33b76ca4be00dba46265e4cbe/src/compact.rs#L139-L152
        // Panic in line 144 frees a temporary vector created in line 142,
        // and the same vector is freed again when `compact_vec` is dropped while stack unwinding.
        compact_vec.remove(123);
    }
}

Output:
2. Allocator layout mismatch in 64-bit build with large capacity.
[TRACE] > alloc [address=0x7f9b011c0010, size=4294967300, align=1]
[TRACE] > dealloc [address=0x7f9b011c0010, size=4, align=1]
3. `Vec::remove()` causes double-free when panicking.
thread 'main' panicked at 'removal index (is 123) should be < len (is 2)', src/liballoc/vec.rs:1062:13
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Dropping 123
Dropping 456
Dropping 0
Dropping 0

Return Code: 101

Run result in 32-bit with cargo run --target i686-unknown-linux-musl --release
1. OOB is possible because MASK_HI is 0 in 32-bit build.
[TRACE] > alloc [address=0x9fb15d0, size=1, align=1]
pointer: 0x9fb15d0
len: 1
capacity: 0
Pushed 0
Pushed 1
Pushed 2
Pushed 3
len: 5
capacity: 0
3. `Vec::remove()` causes double-free when panicking.
thread 'main' panicked at 'removal index (is 123) should be < len (is 34)', src/liballoc/vec.rs:1062:13
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Dropping 134859000
Dropping 134859000
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 123
Dropping 456
Dropping 134859000
Dropping 134859000
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 0
Dropping 123
Dropping 456

In addition, creating a reference that points to an invalid value is already an undefined behavior, even if it is not dereferenced.
https://github.com/maciejhirsz/ordnung/blob/e1f1e3bda332dae33b76ca4be00dba46265e4cbe/src/compact.rs#L161
https://github.com/maciejhirsz/ordnung/blob/e1f1e3bda332dae33b76ca4be00dba46265e4cbe/src/compact.rs#L295-L298
I don't see any location where [T] field is directly used. Maybe a tuple (*ptr: *mut T, len: u32, cap: u32) has the same semantics and the performance while less error-prone.


lilv: 0.24.12 -> 0.24.14

Changes: https://drobilla.net/2022/05/27/lilv-0-24-14.html
Description of changes

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.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

[x] Fits CONTRIBUTING.md.

It's an older version. Was tricked by repology.


Report from publicapis.dev

Name: Forza
Category: Games & Comics
Issue: Broken link
This report was sent from publicapis.dev.

Removed.