Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Jun 23 13:19
    nomennescio opened #2621
  • Jun 23 13:15
    nomennescio opened #2620
  • Jun 23 12:12
    nomennescio opened #2619
  • Jun 22 22:19
    erg labeled #2618
  • Jun 22 22:19
    erg labeled #2618
  • Jun 22 22:19
    erg labeled #2618
  • Jun 22 22:19
    erg labeled #2618
  • Jun 22 22:19
    erg labeled #2618
  • Jun 22 22:19
    erg labeled #2618
  • Jun 22 20:44

    erg on master

    stack-as-data: fix everything. … (compare)

  • Jun 22 20:34
    erg opened #2618
  • Jun 22 20:16

    erg on master

    sequences.extras: update nrotat… (compare)

  • Jun 22 20:10

    erg on master

    fry2: Add another implementatio… syntax: Fix spaces generalizations: add generaliza… and 2 more (compare)

  • Jun 21 23:08

    mrjbq7 on master

    io.monitors: bump sleeps in tes… (compare)

  • Jun 21 18:45
    mrjbq7 closed #2616
  • Jun 21 18:45
    mrjbq7 commented #2616
  • Jun 21 18:45

    mrjbq7 on master

    alien: remove note about 32-bit… (compare)

  • Jun 21 18:25
    mrjbq7 commented #2599
  • Jun 21 18:24
    mrjbq7 closed #2617
  • Jun 21 18:24
    mrjbq7 commented #2617
Benjamin Pollack
@benjamin:bitquabit.com
[m]
windbg, which is part of the SDK, should be enough to clear up if it's in the VM or generated code, and what it did when it died.
You don't need VS.
Alexander Ilin
@alex-ilin
Do I need debugging symbols?
Sorry if that was double posted, I had connection issues.
Benjamin Pollack
@benjamin:bitquabit.com
[m]
You might, which is done by some registry setting if I recall correctly. Been quite awhile. @erg, do you remember how to do that?
Alexander Ilin
@alex-ilin
I also have this issue that Factor.exe sometimes keeps running after all its windows are closed.
Alexander Ilin
@alex-ilin
(Some incorrect messages deleted.)
Alexander Ilin
@alex-ilin
I've added a WinDbg screenshot to the factor/factor#2037 issue instead of posting it here.
Benjamin Pollack
@benjamin:bitquabit.com
[m]
Looking.
Benjamin Pollack
@benjamin:bitquabit.com
[m]
Oh, this got all handled before I got to it. Yay?
John Benediktsson
@mrjbq7
@alex-ilin did that change to gdiplus startup/shutdown work for you?
Alexander Ilin
@alex-ilin
I got mixed results, which may be caused by incomplete update. I'm about to test more.
Alexander Ilin
@alex-ilin

Hey, guys! Does anyone know if Racket has something like Factor's with-directory?
This is what I wrote:

(define (with-current-directory dir func)
  (define prev-dir (current-directory))
  (current-directory dir)
  (define result (func))
  (current-directory prev-dir)
  result)

It works, but 1) it feels awkward to define two things for such a simple job (maybe it's just Factor in me talking), and
2) if anyone knows how to make sure the current-directory would be restored in case of exceptions in the func, I would appreciate a hint.

(PS: yes, unfortunately Factor's Listener built from master-db7911c017 on Jan 26 still hangs after a short session, so I have to explore other options.)
Vivien Moreau
@jmiven_twitter
I've haven't done any Racket in a while, but (current-directory) is a parameter. So if I remember correctly, you can use parameterize. It's taking care of exceptions. https://docs.racket-lang.org/guide/parameterize.html
1 reply
Alexander Ilin
@alex-ilin
The F# REPL sucks, can't even compare to the Listener.
Sometimes I need to process a bunch of files or issue a bunch of commands based on some text lines. Factor would work great to probe your way along through the transformations leading up to creating and then executing a command script.
The only issue is, on Windows its work sessions can be very short and one never knows if there will be a chance to finish what one started.
inivekin
@inivekin

Hey all, I started on a protobuf lib a while ago - I kind of got distracted but I got to a decent point I feel like I should get it properly working and not just conceptually working. I have the foundations of the thing in pure factor (without any c++ shenanigans and creating objects dynamically instead of having a code generation step like most libs do).

Some technical questions

  1. This is probably my nervousness at not being a dynamic language person but I want to make sure: is my use of with-compilation-unit ok here.
    a. if so, is there a catch to using this during unit-tests? Tests keep failing because words I expect to get defined as they run are throwing errors as not defined - I tried looking at pre-existing tests with this word in it but they don't seem to do anything special?
  2. Is there a way for me to alter the "offset" value of a tuple slot and if so is that something I should avoid? In docs all I can find is that it is an "implementation detail", is it actually just the number of elements into an array of slots (that I assume a tuple is built around)

Some general factor questions:

  1. my listener history doesn't persist across sessions. I suspect this is implemented to some degree as I have a .factor_history in my home directory but it only has history up to an old save-image call. I can't seem to find docs/code relevant to this - is there some symbol I need to define at startup to read in that file to the listener history recall?
  2. I always forget whether I need bi* or bi@ or 2bi. Has there been a more symbolic notation that is a bit more intuitive in factor? I imagine something like --| for bi@ (2 inputs to one quote), -|-| for 2bi (each input to each quote) and -|| for bi* (on input to both quotes).
John Benediktsson
@mrjbq7

you can redefine tuples, the machinery handles it for you if you do, for example:

TUPLE: foo name ;

TUPLE: foo name address ;

it will update all tuple instances to add the address slot. reordering works as expected. when you remove/rename a slot they are removed from instances and set to a default initial value, i believe.

@alex-ilin i wish we could figure out your windows situation, thats not a bug we have been able to reproduce for other windows users. i wonder if it has to do with video graphics drivers? we had some issues on linux with certain buggy GL drivers. are you sure you have the latest for your hardware?

@inivekin i'm excited about your protobuf code! if you want a code review, let us know.

1) .factor_history comes from using libreadline and the command-line factor. we currently don't persist listener sessions history, but it wouldn't be that hard to add. so if you do $ rlwrap ./factor then that will participate in "history saving".

2) we've looked at symbolic versions of those and they seem even harder to read than bi/bi*/bi@... one solution is to use cleave/spread/apply with quotations... little bit more verbose, much easier to understand code data flows...

John Benediktsson
@mrjbq7
P.S. if you come up with a nice notation for cleave/spread/apply, we would be happy to include it in extras/ and play with it
Alexander Ilin
@alex-ilin

@alex-ilin i wish we could figure out your windows situation, thats not a bug we have been able to reproduce for other windows users. i wonder if it has to do with video graphics drivers? we had some issues on linux with certain buggy GL drivers. are you sure you have the latest for your hardware?

I currently have 3 Lenovo laptops, all based on self-updating Win10x64, each with different graphics cards, and I didn't do anything specific to the video drivers. The latest laptop is ThinkPad L15 Gen 2, with just Intel's integrated graphics. The other two have both integrated and discrete video cards (I believe the integrated one is always used for desktop apps, but I'm not sure whether Factor qualifies as a regular desktop app, or a custom game interface).

John Benediktsson
@mrjbq7
Does a fresh bootstrap have issues for you? Or after a bit of development? Do you have a non-English language set in Windows? Maybe we can narrow in on a replication of the bug.
Alexander Ilin
@alex-ilin
I have downloaded factor-windows-x86-64-2022-04-03-19-24.zip, then copied the exe-file and the image-file from there. This got stuck after a while when I pressed Alt-Shift-L to open a new Listener window.
It had some DLLs and source in the folder, and I dynamically loaded some vocabs before the hanging happened. Now I've unpacked the aforementioned zip-file into a completely new folder, started the fresh factor.exe, and I will keep the instance running over the course of next days. Whenever I have a task I could do in Factor, I'll use that instance to see if it hangs in a similar fashion.
Alexander Ilin
@alex-ilin
I can't imagine how installed languages could make a difference, but I do have some custom ones installed.
First of all, I've got Programmer Dvorak driver v1.2.8 downloaded from here: https://www.kaufmann.no/roland/dvorak/
Second, I have the Russian layout to keep hackers away. Here's my Win-Space switcher screenshot:
2022-04-12 02-09-20 CompleteAutomat_--all_-_gitk.png
Alexander Ilin
@alex-ilin
Come to think of it, the Programmer Dvorak driver is with me for a long time now, I do have it on all the systems, so it could the the common denominator. If it does indeed have this effect, it would be really unfortunate, since I can't imagine running without it by now.
But I haven't seen any other apps having such issues, so it should be fixable in Factor in any case.
Alexander Ilin
@alex-ilin
In the issue #2037 I mentioned that the hanging never happened to me before commit 8c69252. I wonder if I could time-travel back to that state and run the old Factor version in parallel. Of course, some of my vocabs that are updated to the latest version would throw a hissy fit, but for basic stuff it should be possible to run just to prove a point. I'll look for an old enough zip-file on the build server.
Hm.. Why do all files and folders in https://downloads.factorcode.org/releases/ have the same date-time? I hoped to search for a version based on the date-time of that commit I mentioned.
Alexander Ilin
@alex-ilin
Looking at the build server files, it seems that the latest release before 8c69252 is v0.97 from the end of 2014. Would that really be useful to test-run?
timor
@timor
The need to declare combinator words inline, was it there from the beginning? Or has it been introduced with the optimizing compiler? I.e. is there any fundamental reason why the inline declarations are necessary?
Alexander Ilin
@alex-ilin
The factor.exe copied from the build machine with no extra vocabs got stuck when I tried to close it (Alt+F4) after some running time with pretty simple inputs.
It was built from commit 60005b6cfda0ae7d5c21e5a59f6edc90bd9707cc.
Now I'll try running v0.97 for a few days.
Vivien Moreau
@jmiven_twitter
I'll try to install and use the dvorak layout to see if I can reproduce on my machine. The problem is of course that I don't know dvorak, so it will be a bit tedious :)
kusumotonorio
@kusumotonorio
concatenative.org is not connected.
Alexander Ilin
@alex-ilin
I have solved some homework assignments using v0.97, and it didn't hang at any point, while v0.98 typically hangs midway through the same work.
I'm pretty confident that whatever the problem is, v0.97 doesn't have it.
This was done on the same Win10 laptop, with the Dvorak driver installed.
Doug
@erg_gitlab
concatenative.org -- i think the requests are not getting through cloudflare to hetzner, i dont know what's wrong
Doug
@erg_gitlab
fixed it by removing the cloudflare proxy feature (using dns only) and restarting nginx. but ... why?
Benjamin Pollack
@benjamin:bitquabit.com
[m]
Because!
Computers don't need to make sense. They just need to use up electricity to show me cats.
Alexander Ilin
@alex-ilin
I'd like to point out a couple of issues with releasing Factor too infrequently:
  • I have solved some university homework in Factor, and as part of the assignment I had to write instructions to the teaching assistants who'll check the results about how to run the script. Obviously, I could not tell them to use the bleeding edge version in case something gets broken, I told them to use the latest available release. This means that I had to adapt my solution from the latest version to the older one;
  • I have reproduced the hanging issue in v0.98, and I think it's safe to say that v0.97 doesn't have it. Now, the gap between the two is about 4 years IIRC, and there are no binaries in between, which I could run to bisect the history.
Doug
@erg_gitlab
those are good points. i'd like to point out a way you can bisect it though. there are boot images with names that correspond to git commit ids. you can get the git ids from git history, grab the directory listing, and you will get a bunch of git ids that should bootstrap
https://downloads.factorcode.org/images/build/ i think there are images going back to 2015, check this commit f5853c7e3146421d5ca2923cd0b8a7f92e7627af
the timestamps are wrong because of unix file copying but the checksums will fix that
if you save a virtualbox or vmware image that demonstrates the hang then we can debug it
or i guess we could even zoom debug it if you're up for it. it doesnt hang for me:(
Alexander Ilin
@alex-ilin
Zoom debug sounds cool, I'd love to have a chat with some of the Factor legendary heroes. What should I have on my PC for you to use during debugging? It is no problem to reproduce the thing any time of day.
Alexander Ilin
@alex-ilin
I do have TeamViewer installed in case that would work as well.