Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
Mark Tomko
@mtomko
sorry, my enumeration failed there
Jakub Kozłowski
@kubukoz
looks like it wasn't a good idea to put buildinfo into the suggested package
I'd just use a different package
Mark Tomko
@mtomko
that makes the most sense to me
I can take a quick look at it later today and make a PR for it.
Jakub Kozłowski
@kubukoz
it'd be lovely if all BuildInfo stuff was inlined at compile time though...
maybe there's a way to do that in sbt-buildinfo and fix everything in one go
changing all vals in it to macros would be a start
Mark Tomko
@mtomko
I'm not sure I'm following you.
I think the BuildInfo class is generated at compile time, it should be an object full of vals
Jakub Kozłowski
@kubukoz
it is
but maybe a better solution than having a class generated at compile time would be inlining the vals from that into the code that uses them
Mark Tomko
@mtomko
oh, I see.
Jakub Kozłowski
@kubukoz
e.g. if you have version in your buildinfo object, maybe all usages of BuildInfo.version could just be inlined to 0.0.1 or whatever that is
Mark Tomko
@mtomko
That's above my pay grade :)
But I agree that it's appealing
Denis Rosset
@denisrosset
@kubukoz I have no idea about this BuildInfo stuff -- any doc I can read?
Jakub Kozłowski
@kubukoz
all I know
so it basically generates an object with some vals... I think it might be possible to replace them with macros (and eliminate the BuildInfo object from runtime)
actually, why does spire have BuildInfo in the jar?
I used it in https://github.com/kubukoz/sup but only in the microsite
sounds to me like it wouldn't be very useful to the users of the library anyway
Mark Tomko
@mtomko
I don't like to think I'm a representative sample of spire users in any way, but I can't think of a reason I'd want that information programmatically.
For us it's been handy for deployed applications, but not for libraries
Jakub Kozłowski
@kubukoz
exactly
Mark Tomko
@mtomko
And there are other ways of dealing with debugging version conflicts or classpath problems - sbt can usually show that kind of thing, especially with the dependency graph plugin
ag --scala BuildInfo doesn't return any results in a clean checkout of the spire code
Mark Tomko
@mtomko
hmm, I'm not sure that's a good test based on how the build works, so we should discount that evidence
 ✘  /opt/mtomko/spire   master  ag -a --scala BuildInfo
platform/js/target/streams/compile/buildInfo/$global/streams/sbt-buildinfo/BuildInfo.scala
6:case object BuildInfo {

platform/js/target/scala-2.12/src_managed/main/sbt-buildinfo/BuildInfo.scala
6:case object BuildInfo {

platform/jvm/target/streams/compile/buildInfo/$global/streams/sbt-buildinfo/BuildInfo.scala
6:case object BuildInfo {

platform/jvm/target/scala-2.12/src_managed/main/sbt-buildinfo/BuildInfo.scala
6:case object BuildInfo {
 /opt/mtomko/spire   master 
I think that's better, I missed the -a
So now we at least find the generated BuildInfo files
moritz bust
@busti
Would you recommend using spire to do linear algebra in a computer graphics context?
I basically just have to move some elements around the screen in scala-js and maybe rotate them from time to time, but I would like to avoid using (Double, Double) allover the place.
Denis Rosset
@denisrosset
Spire does not have support for concrete linear algebra (yet), except that it provides typeclasses and laws for vector spaces. That would be only helpful for tests -- and marginally so, because you are using imprecise types that are difficult to test exactly.
@Busti thus: if you are writing a linear algebra library, sure, base it on Spire. If it's just a single use project, just use a tuple. Note that Tuple2 is specialized, so you won't allocate too many objects; but still, every computation will allocate a new tuple.
If you need performance, you'll probably have to work with arrays of doubles.
moritz bust
@busti
@denisrosset Thank you for replying. I will probably continue using a tuple then.
The reason behind my question just that I would like to avoid implementing a bunch of classes like Vec2, Vec3, Mat2, Mat3, Mat4.
Other languages, especially those commonly used for game dev, usually already have some libraries for that purpose, but I cannot really find anything in scala.
Spire already has a lot of implementations, that I could really use, like VectorSpace or Quaternion, however given the scientific nature of the library, it might not be the best choice to use them in a realtime graphics environment.
Luka Jacobowitz
@LukaJCB
I think spire is pretty well optimized for performance, so I don't see why it wouldn't be a good choice :)
Unless of course you want to do stuff on the GPU
Denis Rosset
@denisrosset
Spire is optimized, sure! But it does not provide you the fixed size vectors and matrices you are looking for. If you write your own, you can use Spire to make them generic and fast. See https://github.com/denisrosset/scalin for a non fixed size version (you don't want to use it -- it's not specialized, and it is using Arrays, whereas for fixed size vectors you want to use primitive fields.)
BTW, be very careful with specialization. It fails in unpredictable ways. You'd be better not making your stuff generic if it does not need to be.
Lars Hupel
@larsrh
This room has moved: https://gitter.im/typelevel/spire
Grigory
@pomadchin
@larsrh I remember that there was a way to move / rename any gitter channel?
or it is smth from the past and doesn’t work anymore
Lars Hupel
@larsrh
According to the docs that doesn't work
I'll try to get them to move the history though
Grigory
@pomadchin
gotcha ): that's said
Lars Hupel
@larsrh
Note that this room is closed now