The Usage docs have a section on Handling version-specific logic, but reading that and looking at SE-209, I have to admit, I'm sorta unsure what the path going forward is going to be to try to continue to support multiple toolchain versions with releases.
The // swift-tools-version block doesn't really seem like it helps because it would need to be for the lowest version one intends to support (Say 3). But then how do you use the V4 additions (or the changes in SE-209)? Do we use #if swift(>=4.2) & swift(>=4.0) checks in Package.swift to gate off the differences? There also is the Pac...@swift-4.swift support, but the docs imply that shouldn't be needed.
Thanks to the // swift-tools-version: line, it seems like I have to add a Pac...@swift-4.2.swift file to get the newer SwiftPM to honor the enums for swiftLanguageVersions (or we'd break someone still on Swift 4).
I don't think its easily possible to use #if swift in the manifest file because of how that feature works. The new compiler version directive might be more appropriate if we want to go that route. I think we should look into extending the version specific manifest feature to address this issue.
The new directive requires a pretty recent toolchain, so that rules it out for most library authors since we tend to try to support old toolchains To allow customers to update when they are ready (I.e. not when in the middle of their own releases, etc.)
How complex would that be if I try to do it myself manually? For example, I could just have different python version on my system, and use their fully specified path just to start a local environment. What could be possible issues is this setup? One I could think of is with system wide python package cache, and the effect of these different version trying to write on the same location.
Any insight would be appreciated, of feel free to forward me to online resources. I am sure this topics has been beaten to death, but I am looking for something SUPER simple(i.e. a bash script) and trying to avoid any new tools like pyenv.
If you want multiple different versions of Python, that is also trivial. Each installation already has a separate storage location for third-party packages (it must, because not all packages are compatible with all Python versions), and a separate standard library.
We suspect this could be because he wants to dissuade anyone from trying to replicate what he has built at Citadel. But this chart from Barclays shows that the halo around multi-manager shops has faded a bit this year, after years of industry outperformance ( zoomable version ):
A good example of a multi-strategy firm is DE Shaw, which is mostly known as a quant hedge fund, but whose flagship Composite Fund actually combines a lot of systematic, discretionary and hybrid strategies.
Another defining feature of most (but not all) multi-manager outfits is so-called pass-through fees. While most hedge funds charge a fixed management fee (say, 1 to 3 per cent, typically) and take a slice of their profits (10 to 20 per cent), pass-through funds instead pass on almost all their expenses to investors. In practice this ends up being way more expensive, with 5 per cent plus annual costs common.
Based on regulatory filings, Goldman Sachs estimates that multi-managers use about 5.3 times leverage on average. Not quite LTCM levels, but sizable, and in some strategies (eg Treasury basis trades) it will be much higher.
The REAL worry is correctly that these funds are huge, unusually opaque, heavily leveraged and employ very similar strategies implemented by teams of traders and portfolio managers who often bounce from one firm to the next.
I come from a background in Ruby, and I use RVM to manage multiple Ruby and gemsets. I have googled around, and I found these two SVM and PVM, not sure what should I use? Anyone can recommend what should I use to manage multiple scala?
SBT then proceeds to download the specified Scala version for you if it hasn't been downloaded before, and builds and runs your project with this version. If you want, you can even specify which version of SBT you want, and it'll arrange everything for you as well.
This is because Scala, contrary to Ruby, is a compiled language - it must be compiled/built before running. Ruby projects don't have a build process, and can be (attempted to) run on any Ruby version. Scala projects might not build on incompatible versions, let alone run, so you need to specify which Scala version your project is supposed to be built against.
There's also no such thing as gemsets for Scala. For Ruby, gems were originally system-wide libraries and executables, shared by all Ruby scripts on the system. Therefore, gems override each other and you need to maintain gemsets with the specific versions you require for each project. In Scala, a dependency is just a library specifically for your project. They don't override each other, and you just specify which version you need in your build file. SBT then automatically downloads it for you when you build.
I have been searching for a while but I haven't found anything accurate in 2019 about that how can I have multiple versions from .Net Core on Mac. My use case is that, I use .Net Core 2.2 for active development, and I'd like to play with .Net Core 3 and the goodness it has now like Razor Components and Blazor stuff.
I found articles about how .Net Core multiple version can live on the same system on Windows, which is awesome. But, Mac is not Windows (luckily, and unfortunately), and I'd like to use brew as package manager which is dealing with managing versions instead of me. If it is possible, I don't want to move out form brew zone.
It seems brew cannot help, or at least, I haven't find a solution. However, just downloading and installing packages from .Net Core websites solves the problem. Installing both version SDKS, you will have both.
At least in 2023, I couldn't find an nice Homebrew solution for quickly installing/switching between versions; I came up with this copy/paste "one-liner" based on the official Microsoft documentation with a bit of sketchiness added in for convenience: (I keep it in this Gist in case you visit from the future and want to see if there are some updates)
I thought this would be easy to organize, since I know you can use .no6 dummy files to have plugins that only load in R5 and not R6. That works for that case, so I at least have a way to have R5-only plugins.
Here is what support recommended me to try, which I greatly appreciated, but unfortunately neither proposed solution worked: They said to try dragging and dropping the .GHA files onto the GH canvas in each version of Rhino. It does not work for more than the current session; upon closing and reopening Rhino/GH the dragged-and-dropped plugins disappear. They said to try manually installing plugins to the package manager folders (AppData\Roaming\McNeel\Rhinoceros\Packages\6.0 or 7.0) This also did not work, but was a good idea, because seemingly at least these folders are truly separated by Rhino version.
If there is a solution, I have not been able to find it on the forum. The most relevant thread ended without a solution and @stevebaer said a few times not to do what the users in that thread did as a workaround.
To sum up, there must be a singular, standardized way to organize plugins per Rhino version. It is totally confusing that there are different methods of doing this for R5 vs R6/R7, and with 8 coming, I hope this gets addressed.
When I say install I mean "all actions necessary to provide functionality and UI UX around a body of software". So that clearly entails the files that do the work like apis and such. But it also means palettes, wizards, and other IDE specifics such as install locations to vi.lib, user.lib, instr.lib and mass compiling, etc.
As the builder, I would like to build one package that accomplishes the installation as defined above. One of the most important reasons to have one package do the installation is to prevent confusion over what version of a package is installed.
As a user I don't want to have to grab the right package depending on my version of LabVIEW. Think of this as the NI-DAQmx model. I get DAQmx 19 and that installs "support" for LabVIEW 32 and 64 bit, 16, 17, 18 and 19. One "thing" does all that is necessary to provide the same user experience across the versions of LabVIEW found.
And as a user, you're right... I don't want to wait for a new version of a package that provides support for a new version of LabVIEW. That would be dreadful and put a heavy burden on the developer of code.
One slight amendment... I'd hope for the option to select one or multiple or all versions of LabVIEW found on the system. In other words, an installation doesn't force itself on all installed versions.
@APena - I'd say both are important. As a developer (creating the package) I find it extremely limiting to have a package only be made for a single version of NXG, meaning I have a support nightmare. If I have 20 packages out on the community, that means I need to make another 20 every time a new version of NXG comes out. And if I change careers, all 20 of those packages are now not usable in the next version of NXG.
As a developer (consuming the package), I don't think having one package install support to all versions of NXG installed is the right solution either. GPM is an open source package manager for LabVIEW that installs reuse on a per project bases. MGI made this because they were working on multiple projects in the same version of LabVIEW, and needed a way to use version 1.0 of a package in one project, and version 2.0 on another project. Using VIPM this would mean having to apply a package configuration before switching projects. I think having a system that installs version 1.0 of a package in all versions of NXG is even more restrictive than the current VIPM solution, which at least allows for different versions of a package to be installed in different versions of LabVIEW.
b1e95dc632